XML/XSLT stylesheet/intersect — различия между версиями

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

Текущая версия на 11:26, 26 мая 2010

intersect operator

   <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="Doug">Java</book>
   <book isbn="3333333333" 
     favorite="Doug">C++</book>
   <book isbn="4444444444" 
     favorite="f1">SQL</book>
   <book isbn="5555555555" 
     favorite="Sheri">Oracle</book>
   <book isbn="0375724443" 
     favorite="Sheri">Java</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="Dougs-favorites" as="node()*">
   <xsl:sequence 
     select="/favorite-books/booklist
             /book[contains(@favorite, "Doug")]"/>
 </xsl:variable>
 <xsl:variable name="Sheris-favorites" as="node()*">
   <xsl:sequence 
     select="/favorite-books/booklist
             /book[contains(@favorite, "Sheri")]"/>
 </xsl:variable>
 <xsl:template match="/">
   <xsl:text>
Books we both like:</xsl:text>
   <xsl:text>

  </xsl:text>
   <xsl:for-each select="$Dougs-favorites intersect $Sheris-favorites">
     <xsl:sort select="."/>
     <xsl:value-of select="."/>
     <xsl:text>
  </xsl:text>
   </xsl:for-each>
 </xsl:template>

</xsl:stylesheet> Output:

Books we both like:

</source>