xsl-list
[Top] [All Lists]

RE: xsl attribute value

2004-10-27 01:25:36
Hi,

   <Group>
       <GroupValue type='PO'>PO0005</GroupValue>
   </Group>
   <Group>
       <GroupValue type='SUPPLIER'>Supplier One</GroupValue>
   </Group>
</Report>

In the above XML exmple I am trying to generate the following 
output :-

PO = PO0005
SUPPLIER = Supplier One

I am using the following xslt.

<?xml version="1.0" ?>

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="/Report">
    <xsl:for-each select="Group">
        <xsl:value-of select="GroupValue[(_at_)type]" /> =

"GroupValue" selects a node-set of "GroupValue" child element nodes, 
"[(_at_)type]" filters out those nodes that do not have a "type" attribute, and 
xsl:value-of will extract the string value of the first node in document order.

        <xsl:value-of select="GroupValue" /><br />

Here, again, xsl:value-of will give you the string value of the first 
GroupValue element.

    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

This is generating the following output :-

PO0005 = PO0005
Supplier One = Supplier One

Basically it is not printing the vlue of attribute 'type'.


When I chnge the XSLT as follows :-

<xsl:template match="/Report">
    <xsl:for-each select="Group/GroupValue">
        <xsl:value-of select="@type" /> =
        <xsl:value-of select="." /><br />
    </xsl:for-each>
</xsl:template>

Then it works.

But my requirement is to print attribute value if the
current node is <Group>.

I don't understand, how would the output differ from the output your solution 
above already generates with the source you showed us?

Cheers,

Jarno - Mark Kavanagh: One Hour DJ Mix


<Prev in Thread] Current Thread [Next in Thread>