Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Here is a test of the id()

File: Data.xml <?xml version="1.0"?> <parts-list>   <component component-id="1111111">     <name>Book</name>     <partref refid="1"/>     <partref refid="2"/>     <partref refid="3"/>     <partref refid="4"/>     <description>                 <partref refid="3"/>.     </description>   </component>   <component component-id="5">     <name>name 1</name>     <partref refid="6"/>     <partref refid="7"/>     <description>       <partref refid="6"/> and a        <partref refid="7"/>.     </description>   </component>   <part part-id="6" supplier="4839">     <name>Pitter</name>     <description>       desc6     </description>   </part>   <part part-id="7" supplier="2983">     <name>Patter</name>     <description>       desc7     </description>   </part>   <part part-id="2" supplier="5910">     <name>Spanner</name>     <description>       You can't fix anything without one.     </description>   </part>   <supplier country="Great Britain" vendor-id="4839">     <name>A Inc.</name>   </supplier>   <supplier country="Germany" vendor-id="2983">     <name>D</name>   </supplier>   <supplier country="Great Britain" vendor-id="5910">     <name>U Ltd.</name>   </supplier> </parts-list> File: Transform.xslt <?xml version="1.0"?> <!-- id2.xsl --> <xsl:stylesheet version="1.0"   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">   <xsl:output method="text"/>   <xsl:template match="/">     <xsl:text>&#xA;Here is a test of the id() </xsl:text>     <xsl:text>function in reverse:&#xA;</xsl:text>     <xsl:for-each select="/parts-list/part">       <xsl:text>&#xA;  </xsl:text>       <xsl:value-of select="name"/>       <xsl:text> (part #</xsl:text>       <xsl:value-of select="@part-id"/>       <xsl:text>) is used in these products:&#xA;    </xsl:text>       <xsl:for-each          select="/parts-list/component                 [partref/@refid=current()/@part-id]">         <xsl:value-of select="name"/>         <xsl:if test="position() != last()">           <xsl:text>&#xA;    </xsl:text>         </xsl:if>       </xsl:for-each>       <xsl:text>&#xA;</xsl:text>     </xsl:for-each>   </xsl:template> </xsl:stylesheet> Output:            Here is a test of the id()      function in reverse:                              (part #              ) is used in these products: