XML/XSLT stylesheet/reverse

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

subsequence and reverse

   <source lang="xml">


File: Data.xml <?xml version="1.0" encoding="utf-8"?> <favorite-books>

 <booklist>
   <book isbn="1111111111" 
     favorite="f1">XSLT</book>
   <book isbn="2222222222" 
     favorite="A">Java</book>
   <book isbn="3333333333" 
     favorite="A">C++</book>
   <book isbn="4444444444" 
     favorite="f1">SQL</book>
   <book isbn="5555555555" 
     favorite="B">Oracle</book>
   <book isbn="0375724443" 
     favorite="B">XML</book>
 </booklist>

</favorite-books>

File: Transform.xslt

<?xml version="1.0"?> <xsl:stylesheet version="2.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
 <xsl:output method="text"/>

 <xsl:variable name="A-List" as="node()*">
   <xsl:sequence 
     select="/favorite-books/booklist
             /book[contains(@favorite, "A")]"/>
 </xsl:variable>
 <xsl:variable name="B-List" as="node()*">
   <xsl:sequence 
     select="/favorite-books/booklist
             /book[contains(@favorite, "B")]"/>
 </xsl:variable>
 <xsl:template match="/">
   <xsl:value-of 
     select="if (subsequence($A-List, 1, 1) is 
                 subsequence($B-List, 1, 1))
             then "    The first nodes are the same!
"
             else "    The first nodes aren""t the same!
""/>
   
   <xsl:value-of 
     select="if (subsequence($A-List, 1, 1) is
                 subsequence(reverse($B-List), 1, 1))
             then "    The first nodes are the same!
"
             else "    The first nodes aren""t the same!
""/>
 </xsl:template>

</xsl:stylesheet> Output:

   The first nodes aren"t the same!
   The first nodes aren"t the same!
</source>