Apparently, the example shouldn't work at all since you have to use
"@Cond" instead of "Cond".
So, your example input, with the following stylesheet:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html"/>
<xsl:template match="Root">
<xsl:apply-templates select="Outer[(_at_)Cond='true']"/>
</xsl:template>
<xsl:template match="Outer[(_at_)Cond='true']">
<b>Outer element</b><br/>
<xsl:apply-templates select="Inner[(_at_)Cond='true']"/>
</xsl:template>
<xsl:template match="Inner[(_at_)Cond='true']">
<i>Inner element</i><br/>
</xsl:template>
</xsl:stylesheet>
produced the following output (xalan)
<b>Outer element</b>
<br>
<i>Inner element</i>
<br>
<i>Inner element</i>
<br>
<b>Outer element</b>
<br>
<i>Inner element</i>
<br>
<i>Inner element</i>
<br>
<i>Inner element</i>
<br>
<i>Inner element</i>
<br>
Which is what you want.
Maybe you should try to check your XSL-T processor... it might not
be working properly!
Greets by...
.-=AssCoder=-.
Ragulf Pickaxe wrote:
Hello Guru's
I have a problem with some display, and must have misunderstood
something fundamental, but let me explain:
I have some input XML (simplified):
<Root>
<Outer Cond="true">
<Inner Cond="true"/>
<Inner Cond="true"/>
</Outer>
<Outer Cond="true">
<Inner Cond="true"/>
<Inner Cond="true"/>
<Inner Cond="true"/>
<Inner Cond="true"/>
</Outer>
</Root>
My stylesheet is something like this:
<xsl:template match="Root">
<xsl:apply-templates select="Outer[Cond='true']"/>
</xsl:template>
<xsl:template match="Outer[Cond='true']">
<b>Outer element</b><br/>
<xsl:apply-templates select="Inner[Cond='true']"/>
</xsl:template>
<xsl:template match="Inner[Cond='true']">
<i>Inner element</i><br>
</xsl:template>
The result I want (and expected) is:
<b>Outer element</b>
<i>Inner element</i>
<i>Inner element</i>
<b>Outer element</b>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
But what I get is this:
<b>Outer element</b>
<b>Outer element</b>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
<i>Inner element</i>
If I had called Outer, then Inner from Root, I would expect the last
result, but I tried structuring the code so it should parse deeply.
How do I get the first result, preferibly using template match.
Sincerely
Ragulf Pickaxe :)
_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list