Subject:Accessing an attribute based on the value of another attribute Author:Thanuja Rao Date:08 Apr 2008 07:27 AM
Hi All,
I have an XML which looks something like this.
<ROOT>
<TAG1>
<SUBTAG ID="0">blah blah</SUBTAG>
</TAG1>
<TAG2 ID="0 blah" SCORE="0">
</TAG2>
</ROOT>
In my XSL, I need to access the SCORE attribute of TAG2 based on the value of TAG2 ID attribute which in turn should be the same as SUBTAG ID attribute.
<xsl:template match="SUBTAG">
<xsl:variable name="subtagid">
<xsl:value-of select="@ID"/>
</xsl:variable>
<xsl:value-of select="../TAG2[@ID='$subtagid']/@SCORE"/>
</xsl:template>
The problem here is that i cannot directly check for TAG2[@ID='$subtagid'], instead i need to check for substring(TAG2[@ID],1,1)='$subtagid'. How can i club these 2 statements into one to get the desired output? Please help at the earliest possible.
Subject:Accessing an attribute based on the value of another attribute Author:James Durning Date:08 Apr 2008 12:27 PM Originally Posted: 08 Apr 2008 12:25 PM
Specifically what you're asking for:
<xsl:value-of select="../TAG2[substring(@ID,1,1)=$subtagid]/@SCORE"/>
What you may want:
<xsl:value-of select="../TAG2[contains(@ID=$subtagid)]/@SCORE"/>
or
<xsl:value-of select="../TAG2[substring(@ID,1,string-length($subtagid))=$subtagid]/@SCORE"/>
Another possible way to do this without a variable:
<xsl:value-of select="../TAG2[substring(@ID,1,1)=current()/@ID]/@SCORE"/>