XSLT为什么  出现在我的hrefs?

时间:2010-10-19 17:23:19

标签: xml xslt

5 个答案:

答案 0 :(得分:6)

&#A;是一个编码的换行符。

它和空格是从XSLT中的换行符和空格中保留的。

答案 1 :(得分:6)

只需使用

<a href="http://{BackSideUrl}/customerlogin.asp?P={DynaCalPath}">
           Login to View History of This Request
</a>

这个(使用AVT - 属性 - 值 - 模板)更短,更易读。

几乎所有答案中都解释了报告行为的原因,即属性href的值(部分)来自包含NL字符的文本节点

这些问题是由纯粹的人类心理现象造成的:只要它被非白色空间包围,我们就会清楚地看到NL,但是每当NL处于非白色空间时我们都是NL盲开始或在一个文本块的末尾。任何XSLT / XML IDE都可以在请求组中显示特殊的“不可见”字符,例如NL和CR。

答案 2 :(得分:2)

混合文本和元素节点时会保留空格。因此,一种解决方案是避免空白开始(如Bart所示),或者执行以下操作,因为格式化得很好,所以可能更具可读性:

<xsl:attribute name="href">
    <xsl:text>http://</xsl:text>
    <xsl:value-of select="BackSideUrl"/>
    <xsl:text>/customerlogin.asp?P=</xsl:text>
    <xsl:value-of select="DynaCalPath"/>
</xsl:attribute >

答案 3 :(得分:1)

我自己也不是很熟悉XSLT,但是从一般的编程经验来看,请尝试更改

<xsl:attribute name="href">
                  http://<xsl:value-of select="BackSideUrl"/>/customerlogin.asp?P=<xsl:value-of select="DynaCalPath"/></xsl:attribute >

<xsl:attribute name="href">http://<xsl:value-of select="BackSideUrl"/>/customerlogin.asp?P=<xsl:value-of select="DynaCalPath"/></xsl:attribute >

答案 4 :(得分:1)