用xsl:text解释换行符?

Gre*_*tes 13 xml ant xslt whitespace xslt-1.0

我有一个XSL样式表,其中包含如下xsl:text节点中的内容:

<xsl:text>
foo
bar
baz
</xsl:text>
Run Code Online (Sandbox Code Playgroud)

样式表本身是一个带有"unix-style"换行符终结符的文本文件.我在Windows上调用此样式表以及类似unix的平台.将输出符合调用它的平台的约定会很好.

当我在Windows上运行此样式表时,输出具有xsl:text节点内容之外的所有内容的回车符/换行符对.

我是否可以指示XSLT处理器将xsl:text节点内容中的换行符转换为特定于平台的行尾?

更多上下文:我正在调用Apache Ant 1.7.1 XSLT任务中的样式表,如下所示:

<xslt in="in.xml" out="out.xml" style="stylesheet.xsl"/>
Run Code Online (Sandbox Code Playgroud)

样式表标题目前如下所示:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xalan="http://xml.apache.org/xslt"
    exclude-result-prefixes="xalan">
    <!-- contents elided -->
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

Ada*_*ume 5

你可以为样式表定义一个参数,如下所示:

<xsl:param name="br">
    <xsl:text>&#10;</xsl:text>
</xsl:param>
Run Code Online (Sandbox Code Playgroud)

并在Ant脚本中使用嵌套的param元素传入适当的行尾字符.当然,这个例子中的默认值是Unix风格的换行符.我想要输出值,你必须使用:

<xsl:copy-of select="$br"/>
Run Code Online (Sandbox Code Playgroud)

它很冗长,但它确实有效.


Jen*_*n A 1

我不确定如何自动执行正确的换行符(这可能取决于您正在使用的 xslt 处理器),但您也许可以在文本节点的内容中强制换行符。\r\n 是 &#xD; &#xA;, \n 是&#xA;,例如您可以使用:

<xsl:text>foo&#xD;&#xa;bar&#xD;&#xa;</xsl:text>以获得您正在寻找的输出。