Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Id() takes a string as its argument and returns a node-set containing any node that has an attribute of type ID equal to t

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"?> <!-- id1.xsl --> <xsl:stylesheet version="2.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:&#xA;</xsl:text>     <xsl:for-each select="/parts-list/component">       <xsl:text>&#xA;  </xsl:text>       <xsl:value-of select="name"/>       <xsl:text> (component #</xsl:text>       <xsl:value-of select="@component-id"/>       <xsl:text>) uses these parts:&#xA;    </xsl:text>       <xsl:for-each select="id(partref/@refid)">         <xsl:value-of select="name"/>         <xsl:text>&#xA;    </xsl:text>       </xsl:for-each>     </xsl:for-each>   </xsl:template> </xsl:stylesheet> Output: Here is a test of the id() function:   Book (component #1111111) uses these parts:        name 1 (component #5) uses these parts: