XML/XSLT stylesheet/idref
Here is a test of the idref()
<source lang="xml">
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> Here is a test of the idref() </xsl:text> <xsl:text>function: </xsl:text> <xsl:for-each select="/parts-list/part"> <xsl:text> </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: </xsl:text> <xsl:value-of select="idref(@part-id)/../../name" separator=" "/> <xsl:text> </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: </source>