0

main.xsl があります。同じ呼び出しテンプレートを使用して、A.xsl と B.xsl を呼び出します。

<xsl:call-template name="setFormat">
  ...            
</xsl:call-template>

「setFormat」テンプレートを A.xsl と B.xsl で複製するのではなく、一度使用したいのですが、「setFormat」が 1 つの xsl にある場合、別の xsl には「名前付きテンプレート 'setFormat' が存在しません」と表示されます。

xsl:includemain.xsl への参照を追加するために使用しています

私は何をすべきか?

MVS .Net 2005 を使用しています。

私はmain.xsl、A.xslとB.xslへのmain.xsl呼び出しで作業しています:

<xsl:include href="./A.xsl"/>
<xsl:include href="./B.xsl"/>

A.xsl と B.xsl の両方が、「setFormat」という名前の call-template を使用して同じテンプレートを呼び出します。

「setFormat」はどの部分にも含めることはできません。たとえば、それが A.xsl にある場合、B.xsl はスコープ内にないため、または main.xsl にある場合は A.xsl と B.xsl がそれを見つけることができませんでした。A.xsl と B.xsl を追加して複製したくありません。

複製せずにcall-templateを介して「setFormat」を呼び出すにはどうすればよいですか?

4

1 に答える 1

1

あなたの質問からは、3 つのスタイルシートのどれにどれが含まれているかが明確ではありません。

あなたは、ドキュメントを呼び出すか処理することを意味しているとA.xsl思います。この場合、どちらの場合でも表示されるように、共有の名前付きテンプレートを配置する必要があります。B.xslxsl:include main.xslA.xslB.xslmain.xsl

一方、ととの両方を含めるために 2 回main.xsl使用することを意味する場合、ドキュメントで呼び出すコード パスは 1 つだけであり、名前付きテンプレートは 3 つのファイルのいずれかに存在できます。xsl:includeA.xslB.xslmain.xsl

于 2013-01-03T02:12:07.277 に答える