Mega Code Archive

 
Categories / XML / XSLT StyleSheet
 

Here is a test of the idref()

File: Data.xml <?xml version="1.0"?> <parts-list>   <component component-id="C28392-33-TT">     <name>Name 0</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>   </part>   <part part-id="7" supplier="2983">     <name>Patter</name>   </part>   <part part-id="2" supplier="5910">     <name>Spanner</name>   </part>   <supplier country="Great Britain" vendor-id="4839">     <name>A Inc.</name>   </supplier>   <supplier country="Germany" vendor-id="2983">     <name>B Inc.</name>   </supplier>   <supplier country="Great Britain" vendor-id="5910">     <name>C Inc.</name>   </supplier> </parts-list> 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:template match="/">     <xsl:text>&#xA;Here is a test of the idref() </xsl:text>     <xsl:text>function:&#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:value-of select="idref(@part-id)/../../name"          separator="&#xA;    "/>        <xsl:text>&#xA;</xsl:text>     </xsl:for-each>   </xsl:template> </xsl:stylesheet> Output: Here is a test of the idref() function:   Pitter (part #6) is used in these products:        Patter (part #7) is used in these products:        Spanner (part #2) is used in these products: