xsl-list
[Top] [All Lists]

Re: Upon matching attribute value, increment output

2004-09-24 00:05:22
Hi Russ,

You can count the number of preceding CON nodes with the same CODE attribute and if it is greater than zero output its value:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output method="text"/>
    <xsl:template match="CON">
        <xsl:value-of select="@CODE"/>
<xsl:variable name="precedingCodes" select="count(preceding-sibling::CON[(_at_)CODE=current()/@CODE])"/>
        <xsl:if test="$precedingCodes > 0">
            <xsl:text>_</xsl:text>
            <xsl:value-of select="$precedingCodes"/>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Best Regards,
George
-----------------------------------------------
George Cristian Bina
<oXygen/> XML Editor & XSLT Editor/Debugger
http://www.oxygenxml.com

Russ Little wrote:
        If I have the following XML:
<GRP>
          <CON @CODE="ABC"/>
          <CON @CODE="DEF"/>
          <CON @CODE="ABC"/>
          <CON @CODE="ABC"/>
          <CON @CODE="XYZ"/>
          <CON @CODE="ABC"/>
        </GRP>
And I want my output to be: ABC
        DEF
        ABC_1
        ABC_2
        XYZ
        ABC_3
How would I get there? I cannot seem to manage it with any combination of count, value-of, match, etc., and almost all posts I see are for node values instead of attributes, or HTML instead of text...nothing I've seen seems to give me a valid idea to run with. Any help would be greatly appreciated! Thanks, Russ



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