У меня есть таблица стилей xsl, которая содержит следующие шаблоны, с которыми я столкнулся с проблемой:
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<!-- This is the 'parent' matching template that applies two specific templates -->
<xsl:template match="*[starts-with(name(), 'my-element')]">
<xsl:apply-templates select="." mode="mode1"/> = <xsl:apply-templates select="." mode="mode2"/>
</xsl:template>
<!-- This one gets matched and applied from the parent template above -->
<xsl:template match="my-element" mode="mode1">
...
</xsl:template>
<!-- And so does this one -->
<xsl:template match="my-element" mode="mode2">
...
</xsl:template>
<!-- But then there's also this template that does not get matched -->
<!-- from the parent -->
<xsl:template match="some-element|my-element" mode="mode2">
...
</xsl:template>
Это нормально, что последний шаблон (some-element | my-element) не совпадает, например, потому что уже есть другой (my-element), который имеет такой же режим (mode2)?
Я протестировал это с Xalan и Visual Studio 2010 (внутри отладчика), они оба ведут себя одинаково (то есть не рассматривают самый последний шаблон как соответствующий).