在XSLT中调试可能的转义文本问题?

时间:2013-04-25 17:29:02

标签: xslt

我有一个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处理命令?

0 个答案:

没有答案