XML:は同じレベルで、同じ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つだけ(レンダリングされた指定されたモードを持つ最初のもの)のいずれか。すなわち
<xsl:template match="Elements">
</xsl:template>
は
または <xsl:template match="Elements" mode="Different" />
が二度レンダリングレンダリングされません。
これはどのように修正する必要がありますか?私が研究したどこでも、それはモードを優先することを提案します。多くのプログラマーがそれを使用しているので、単純なものでなければなりませんか?
これは、あなたのXSLTプログラムの残りの部分を見ずにはお答えできません。どこかでかなり単純な間違いがありますが、文脈でそれを指摘するだけでは不十分です。それでもあなたのために失敗したXSLT/XMLペアを生成し、質問に追加してください。 – Tomalak
あなたが説明したことは、lecitであり、うまくいくはずです。 XSLTをもう少し詳しく見せてください。 –
私は今質問を編集しました。それは少し明確になることを望みますか? –