Hi all,
I have a template that croups consecutive elements of a certain type. The
problem is that it also groups these elements if there is text between these
elements. How do I avoid that?
Input xml
<?xml version="1.0"?>
<root>
<X>
Some text
<A>
Something in A
</A>
<A>
Something in A
</A>
<B>
Something in B
</B>
<A>
Something in A
</A>
</X>
<Y>
Some text
<A>
Something in A
</A>
Some text between two A elements
<A>
Something in A
</A>
</Y>
</root>
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="X">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Y">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="A">
<!-- Do something here -->
<xsl:choose>
<xsl:when test="not(preceding-sibling::*[1][self::A])">
<!-- This test correctly does not choose the second A under X, but
also ignores the second A under Y which I do not want -->
</xsl:when>
<xsl:otherwise> </xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
I can see that I need to do something in this test
"not(preceding-sibling::*[1][self::A])", but I do not know how.
I hope that I have explained the problem well enough, and that somebody can
help me.
Regards,
Ragulf Pickaxe :|
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.com/