XSLT换行符显示为十六进制符号

时间:2013-02-28 17:31:48

标签: xslt

我一直在尝试用换行符替换schemaLocation属性中出现的所有空格字符。我发现了很多关于如何做到这一点的变化。最简单的就是

    <xsl:variable name='nl'><xsl:text>
</xsl:text></xsl:variable>

然后在我的替换中,

<xsl:value-of select(replace($data,' ',$nl) />

然而,我尝试这种方式,它打印文字'#x0A;'在文件中

我已经尝试将XSL:OUTPUT更新为method =“text”但是这会产生许多其他奇怪的结果

我只想要一个换行符,而不是“#x0A”;此

的字符串表示形式

1 个答案:

答案 0 :(得分:3)

嗯,从你发布的内容来看,我不确定你做错了什么。当您以十六进制键入换行符时,您是否忘记了&符号?一个简单的错误。从设计的角度来看,我建议使用换行符的十六进制代码,因为它更干净,更难以意外删除。

此代码有效:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:variable name="newline">
  <xsl:text>&#xa;</xsl:text>
</xsl:variable>

<xsl:template match="/">
  <xsl:variable name="data">
    <xsl:text>This is a string</xsl:text>
  </xsl:variable>
  <xsl:value-of select="replace($data,' ', $newline)" />
</xsl:template>

</xsl:stylesheet>

输出正是我们所期望的:

This
is
a
string