XML/XSLT stylesheet/preceding

Материал из Web эксперт
Перейти к: навигация, поиск

preceding axis

File: Data.xml
<?xml version="1.0"?>
<Employees>
  <Person>
    <FirstName>A</FirstName>
    <LastName>B</LastName>
    <DateOfBirth>2008-12-12</DateOfBirth>
  </Person>
  <Person>
    <FirstName>C</FirstName>
    <LastName>D</LastName>
    <DateOfBirth>2008-11-11</DateOfBirth>
  </Person>
  <Person>
    <FirstName>E</FirstName>
    <LastName>F</LastName>
    <DateOfBirth>2008-10-10</DateOfBirth>
  </Person>
</Employees>

File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <html>
      <head>
        <title>preceding axis.</title>
      </head>
      <body>
        <h3>Preceding axis.</h3>
        <xsl:apply-templates
          select="/Employees/Person[3]/DateOfBirth" />
      </body>
    </html>
  </xsl:template>
  <xsl:template match="DateOfBirth">
    <xsl:for-each select="preceding::*">
      <paragraph>
        <xsl:value-of select="name(.)" />
        which contains the text "
        <xsl:value-of select="." />
        ".
      </paragraph>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
Output:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>preceding axis.</title>
   </head>
   <body>
      <h3>Preceding axis.</h3>
      <paragraph>Person
                 which contains the text "
                 
             A
             B
             2008-12-12
           
                 ".
               
      </paragraph>
      <paragraph>FirstName
                 which contains the text "
                 A
                 ".
               
      </paragraph>
      <paragraph>LastName
                 which contains the text "
                 B
                 ".
               
      </paragraph>
      <paragraph>DateOfBirth
                 which contains the text "
                 2008-12-12
                 ".
               
      </paragraph>
      <paragraph>Person
                 which contains the text "
                 
             C
             D
             2008-11-11
           
                 ".
               
      </paragraph>
      <paragraph>FirstName
                 which contains the text "
                 C
                 ".
               
      </paragraph>
      <paragraph>LastName
                 which contains the text "
                 D
                 ".
               
      </paragraph>
      <paragraph>DateOfBirth
                 which contains the text "
                 2008-11-11
                 ".
               
      </paragraph>
      <paragraph>FirstName
                 which contains the text "
                 E
                 ".
               
      </paragraph>
      <paragraph>LastName
                 which contains the text "
                 F
                 ".
               
      </paragraph>
   </body>
</html>