RE: [xsl] xsl attribute value

Subject: RE: [xsl] xsl attribute value
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Wed, 27 Oct 2004 11:25:36 +0300
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[@type]" /> =

"GroupValue" selects a node-set of "GroupValue" child element nodes, "[@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

Current Thread