0

我有一个 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