0

2 つの異なるコンテキストで使用すると異なる結果が得られる XSL テンプレートがあります。

欠陥を示すテンプレートは次のとおりです。

<xsl:template match="*" mode="blah">
    <!-- snip irrelevant stuff -->
    <xsl:if test="see">
       <xsl:message>Contains a cross-ref. <xsl:value-of select="."/></xsl:message>
    </xsl:if>
    <xsl:apply-templates select="."/>
</xsl:template>

与えられた:

<el>This is a '<see cref="foo"/>' cross-referenced element.</el>

ある状況では、望ましい結果が得られます。

Contains a cross-ref. This is a ' ' cross-referenced element.

( は<see/>XML 要素として扱われ、最終的には別のテンプレートによって照合されます。)

しかし、別の状況では、xsl:ifがトリガーされず、 でコンテンツを出力すると<xsl:message><xsl:value-of select="."/>、次のようになります。

This is a '<see cref="foo"/>' cross-referenced element.

後者の不適切な動作のシナリオでは、出力がエスケープされたように動作しているように思えます。それは理にかなっていますか?私は間違った木を吠えていますか?これは一般的に複雑な XSL の状況であり、コール スタックを追跡するのは困難です。探している特定の XSLT 処理コマンドはありますか?

4

0 に答える 0