我想为XSLT中的文本输出生成换行符。什么好主意吗?
当前回答
我发现了<xsl:text>中的文字换行符和使用
的文字换行符之间的区别。
虽然文字换行符在我的环境中工作得很好(使用Saxon和默认的Java XSLT处理器),但当在. net环境中运行的另一个组执行代码时,我的代码失败了。
更改为实体(
)使我的文件生成代码在Java和. net上一致地运行。
此外,文字换行符很容易被ide重新格式化,当文件由“不知情”的人维护时,可能会无意中丢失。
其他回答
以下XSL代码将产生换行符(换行符):
<xsl:text>
</xsl:text>
对于回车,使用:
<xsl:text>
</xsl:text>
<xsl:text xml:space="preserve">
</xsl:text>
我发现了<xsl:text>中的文字换行符和使用
的文字换行符之间的区别。
虽然文字换行符在我的环境中工作得很好(使用Saxon和默认的Java XSLT处理器),但当在. net环境中运行的另一个组执行代码时,我的代码失败了。
更改为实体(
)使我的文件生成代码在Java和. net上一致地运行。
此外,文字换行符很容易被ide重新格式化,当文件由“不知情”的人维护时,可能会无意中丢失。
你可以试试,
<xsl:text>
</xsl:text>
它会起作用的。
我不能只使用<xsl:text>
</xsl:text>方法,因为如果使用XSLT格式化XML文件,实体就会消失。所以我不得不使用一种稍微迂回的方法来使用变量
<xsl:variable name="nl" select="' '"/>
<xsl:template match="/">
<xsl:value-of select="$nl" disable-output-escaping="no"/>
<xsl:apply-templates select="*"/>
</xsl:template>