In the example below I expect that I'm applying a template
rule for the <list> element and using a nested predicate
in which I'm saying "only apply this rule if a child of
<list> is <xyz> which has a child of <PPP>".
But in my example I've inadvertently set up the template
to match on <xyz>.
Nevertheless, the template with a mode named "test" gets
invoked.
Why is this the case?
Apologies if there's not enough here. I wanted to try and
get to the crux of my issue without having a lot extra junk.
xalan 2.3.1 by the way.
<ABC>
<def>
<list>
<xyz>
<QQQ></QQQ>
</xyz>
<xyz>
<QQQ></QQQ>
<PPP></PPP>
</xyz>
</list>
</def>
</ABC>
<xsl:template match="def">
<xsl:apply-templates select="list[xyz[PPP]]" mode="test" />
</xsl:template>
<xsl:template match="xyz" mode="test">
<xsl:message><xsl:value-of select="name()" /></xsl:message>
...
</xsl:template>
|