XML:
<Root>
<Elements>
<Element>el1</Element>
<Element>el2</Element>
</Elements>
<Elements>
<Element>el1</Element>
<Element>el2</Element>
</Elements>
</Root>
同じ要素に対して 2 つの異なるテンプレートを適用するために生成しようとしています。
メイン テンプレート:
<xsl:stylesheet version="1.0">
<xsl:template match="/Root">
At root level
<xsl:apply-templates select="Elements">
<h1>Render something more</h1>
<xsl:apply-templates select="Elements" mode="1:Custom">
</xsl:template>
<!-- This doesn't render though it is called above-->
<xsl:template match="Elements">
render something here
</xsl:template>
<!-- This renders twice -->
<xsl:template match="Elements" mode="1:Custom">
render something else here
</xsl:template>
</xsl:stylesheet>
最初のテンプレートにモードを追加すると、両方ともレンダリングされません。
また試しました:
<xsl:apply-templates select="Elements" mode="1:Custom" />
別のテンプレートを次のように適用します。
<xsl:apply-templates select="Elements" mode="Different" />
2 つのうちの 1 つだけ (指定されたモードを持つ最初のものがレンダリングされます)。すなわち
<xsl:template match="Elements">
</xsl:template>
レンダリングしない
または
<xsl:template match="Elements" mode="Different" />
2 回レンダリングします。
これを修正するにはどうすればよいですか? 私が調査したところはどこでも、モードを優先することを提案しています。非常に多くのプログラマーが使用しているので、単純なものでなければなりませんか?