我正在使用Xsl转换将Xml数据显示为Html。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:util="urn:the-xml-files:xslt">
<xsl:output method="xml" indent="yes"
omit-xml-declaration="yes" encoding="utf-8"/>
<xsl:template match="/">
<xsl:for-each select="/Categories/Category">
<li class="c">
<a class="d">
<xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute>
</a>
</li>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如果li元素的id属性的select不在一行中,则XSL处理器将用空格填充属性值,这完全打破了前端的javascript。
当然,Visual Studio将始终重新格式化多行定义,因此如果我更改某些内容,我需要手动删除空白。
如何从元素中删除不必要的空格?我应该使用xsl:strip-space进行xsl:copy,还是有更好的解决方案? :)
答案 0 :(得分:4)
解决方案很简单:
而不是:
<a class="d">
<xsl:attribute name="id">cat_<xsl:value-of select="categoryid"/></xsl:attribute>
</a>
使用:
<a class="d" id="cat_{categoryid}"/>
答案 1 :(得分:2)
除了Dimitre优雅的解决方案外,还提供以下详细版本:
<a class="d">
<xsl:attribute name="id">
<xsl:text>cat_</xsl:text>
<xsl:value-of select="categoryid"/>
</xsl:attribute>
</a>
我只提到这一点,因为<xsl:text>
经常被忽视,而且非常有用。无论如何,XSL是一种冗长的语言。