我正在使用XSLT生成超链接,并且我在链接的单词的末尾不断获得额外的空格。
我的XML看起来像这样:
The last word needs to be a <url id="1">link</url>.
使用@id连接链接。这是我的XSLT:
<xsl:template match="//url">
<a href="../mainsite.html{@id}"><xsl:copy-of select="."/></a>
</xsl:template>
出于某种原因,这会在“链接”一词上生成一个链接,但它会在其后面添加一个空格,即使网址标记之间没有空格。
如果我为普通字符串切换xsl:copy-of,问题就会消失。例如:
<xsl:template match="//url">
<a href="../mainsite.html{@id}">string</a>
</xsl:template>
地球上有多余的空间来自哪里?它让我很生气,因为标点符号后面的任何链接看起来都很棘手。我应该在哪里寻找追踪问题的方法?
非常感谢能够提供帮助的任何人。
答案 0 :(得分:3)
normalize-space属性将删除前导和尾随空格。
<xsl:value-of select="normalize-space(.)"/>
答案 1 :(得分:2)
可能是在值的末尾添加换行符。 xsl:copy-of的正常行为是添加一个结束行中断,它可以将自身显示为一个额外的空格。
答案 2 :(得分:1)
<xsl:template match="//url"> <a href="../mainsite.html{@id}"><xsl:copy-of select="."/></a> </xsl:template>
出于某种原因,这会在单词&#39; link&#39;上生成一个链接,但它会添加 它之后的空间
问题在于你正在使用:
<xsl:copy-of select="."/>
你应该使用的地方:
<xsl:value-of select="."/>
由于你的样式表显然设置为缩进输出,你最终得到:
The last word needs to be a <a href="../mainsite.html1">
<url id="1">link</url>
</a>
然后,浏览器会忽略非HTML标记,并将换行符渲染为空格。