This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Order of template match


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]