XML/XSLT stylesheet/preceding

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

preceding axis

   <source lang="xml">

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>

Preceding axis.

       <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>

Preceding axis.

     <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>

</source>