2025-03-08 09:00:04

在XSLT中生成新行

我想为XSLT中的文本输出生成换行符。什么好主意吗?


当前回答

我发现了<xsl:text>中的文字换行符和使用&#xA;的文字换行符之间的区别。

虽然文字换行符在我的环境中工作得很好(使用Saxon和默认的Java XSLT处理器),但当在. net环境中运行的另一个组执行代码时,我的代码失败了。

更改为实体(&#xA;)使我的文件生成代码在Java和. net上一致地运行。

此外,文字换行符很容易被ide重新格式化,当文件由“不知情”的人维护时,可能会无意中丢失。

其他回答

以下XSL代码将产生换行符(换行符):

<xsl:text>&#xa;</xsl:text>

对于回车,使用:

<xsl:text>&#xd;</xsl:text>
<xsl:text xml:space="preserve">
</xsl:text>

我发现了<xsl:text>中的文字换行符和使用&#xA;的文字换行符之间的区别。

虽然文字换行符在我的环境中工作得很好(使用Saxon和默认的Java XSLT处理器),但当在. net环境中运行的另一个组执行代码时,我的代码失败了。

更改为实体(&#xA;)使我的文件生成代码在Java和. net上一致地运行。

此外,文字换行符很容易被ide重新格式化,当文件由“不知情”的人维护时,可能会无意中丢失。

你可以试试,

<xsl:text>&#xA;</xsl:text>

它会起作用的。

我不能只使用<xsl:text>&#xa;</xsl:text>方法,因为如果使用XSLT格式化XML文件,实体就会消失。所以我不得不使用一种稍微迂回的方法来使用变量

<xsl:variable name="nl" select="'&#10;'"/>
<xsl:template match="/">
    <xsl:value-of select="$nl" disable-output-escaping="no"/>
    <xsl:apply-templates select="*"/>
</xsl:template>