【问题标题】:new line character in xsltxslt 中的换行符
【发布时间】:2012-11-28 19:09:26
【问题描述】:

我添加换行符' ' 在 xslt 文件中的两个字符串之间,如下所示:

test 
 test1

输出是这样的:

test
test1

但我希望输出是这样的:

test 
 test1

这在 xslt 中可行吗?

我想我应该谈谈我为什么想要这个:

第一个输出在 excel 的 Alt + Enter 中不起作用。但是当我像 output2 这样手动编辑 xml 时,它可以工作。 也不行。

额外说明

让我们假设“test test1”写在一个 Excel 单元格中。当我在其中使用 Alt + Enter 并使用 notpead++ 打开文件时,我看到这个单元格是这样的:

test
test1

在 xslt 文件中,我尝试将所有“换行符”文本替换为“ " 来产生这种效果。但是当我在 notpead 中打开这个输出时,我看到:

test
test1

但我希望输出是这样的:

test
test1

【问题讨论】:

  • 两者在语义上是相同的,那为什么会给你带来问题呢?
  • 也许test 
test1`是你想要的?
  • 第一个输出在 excel 的 Alt + Enter 中不起作用。但是当我像 output2 这样手动编辑 xml 时,它可以工作。 
也不行。
  • 正如@Rowland 所暗示的,任何正确的XML 解析器都应该将
 和文字换行符视为相同的字符。因此,您不必担心您的输出是否有文字换行符或
。而且我不明白您所说的“在excel的Alt + Enter中不起作用”是什么意思。您如何将 XML 输入输入 Excel?
  • @LarsH 我添加了一些额外的注释。我想现在很清楚了。

标签: xml xslt newline


【解决方案1】:

试试这样的:-

<xsl:text>test &#10; test1 </xsl:text>

【讨论】:

  • 结果应该是test &amp;amp;#10; test1,这不是OP想要的。
  • 它现在应该给出语义正确的输出,但它与 OP 已经拥有的没有任何不同。他想确保它以某种方式连载。也许你的意思是&lt;xsl:text disable-output-escaping="true"&gt;test &amp;amp;#10; test1&lt;/xsl:text&gt;?这在 XSL 处理器可以控制序列化的某些情况下会起作用(但不能保证在任何情况下都能正常工作)。
【解决方案2】:

如果我们通过模板操作一些 xml 节点,那么我们可以像 ...

       <xsl:template match="node">
                <xsl:text>Package: </xsl:text>
                <xsl:value-of select="childNode"/>
                <xsl:text> available from </xsl:text>
                <xsl:value-of select="OtherchildNOde"/>
                <xsl:text>&lt;br/&gt; </xsl:text>
        </xsl:template>

所以主要的是[
]。我们也可以使用 p 标签代替 br 标签。

【讨论】:

  • <br/>
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多