2017-10-04 2 views
0

XMLファイルを使用するXSLファイルがあります。 XSLファイルでは、XML文書にある情報を2回表示する必要がありますが、そのたびに少しずつ異なります。名前でテンプレートを適用するにはどうすればよいですか?

どのように私は同じ試合を持っている別のテンプレートを宣言し、私は<xsl:apply-templates select="...">...</>

+3

あなたは 'モード '属性を使用することができるかもしれようですね(https://www.w3.org/TR/xslt#modes)より正確な回答を得るためには、XMLのサンプルと期待する出力を表示するために質問を編集することをお勧めします。ありがとう。 –

+1

あなたは具体的にテンプレート名について尋ねたので、私は実際にテンプレートに名前が付いていることを観察します。名前によるテンプレートアクセスは 'xsl:call-template'アクションによって提供されますが、' xsl:apply-templates'では(直接)実行されません。 'apply-templates'のときに同じノードにマッチする異なるテンプレートの中から選択するための通常の優先度ルールをオーバーライドしたい場合は、@TimCが既に述べたように、あなたは' mode'ディメンションを持っています。 –

答えて

2

どのように私は同じ試合を持っている別のテンプレートを宣言したが、 をするかを指定することができますを使用するときに呼び出されるしたいテンプレートを指定することができますテンプレート ...

使用時に呼び出す必要があります。テンプレートルールでは:

<xsl:template match="xyz" mode="mode1"/> 

適用し、テンプレートで呼び出す:

<xsl:apply-templates select="abc" mode="mode1"/> 

「ベストフィット」テンプレートルールを探し、適切なモードでのみテンプレートルールが考慮されています。

モードはすべてのXSLTバージョンで利用できます。 XSLT 3.0では、例えば、モードのプロパティを宣言することができ

<xsl:mode name="mode1" streamable="yes" on-no-match="fail"/> 
関連する問題