0

私は XSLT に非常に慣れていません。テンプレート内から呼び出し元のテンプレートの名前を取得する方法があるかどうか疑問に思っていました。

現在、少し複雑な構造で次のものを取得しています。1 つのテンプレートが 1 回直接含まれ、別のテンプレートを介して 1 回含まれます。特定のテンプレートから呼び出された場合にのみ、このテンプレートに新しいタグを追加する必要があります。

<xsl:element name="parent">
     <xsl:choose>
         <xsl:when test="$myVariable = 'process1'">
              <xsl:call-template name="templateA"/>
        </xsl:when>
        <xsl:otherwise>
              <xsl:call-template name="templateB"/>
        </xsl:otherwise>
     </xsl:choose>
</xsl:element>

<xsl:template name="templateA">
    <!-- Some Other Tags Here -->
    <xsl:call-template name="templateB />"
</xsl:template>

<xsl:template name="templateb"> <!-- very big template -->
    <!-- existing tags here  -->
    <!--  Add a new tag here only if called via templateA -->
</xsl:template>

明確にするために、

ご覧のとおり、templateBはどちらの方法でもインクルードされますが、templateAはいくつかのタグを追加してからtemplateBをインクルードします。

templateAから呼び出された場合にのみ、新しいタグをtemplateBに追加したいと考えています。することは可能ですか?

4

3 に答える 3

1

パラメーターを渡すことが解決策です。ネストされたテンプレートで渡されるかどうかはわかりませんでした。

私のシナリオに適切な解決策は tunnel-params.

パラメータは、xslt 2.0 ではデフォルトで呼び出されるテンプレートにトンネリング ( で渡されます) されますが、xslt 1.0 では を指定する必要がありますtunnel="yes"。トンネリングmyVariableを使用すると、呼び出されたテンプレートにアクセスできます。

于 2013-07-12T14:25:33.810 に答える