string - 在XSLT中,如何将元素的文本内容分成几行?

标签 string xslt character

我正在使用XSLT解析XML元素的文本内容。该文本包含换行符,但我似乎无法正确解析它们。我正在使用在网上找到的代码来分割文本。这是代码的相关部分。

<xsl:variable name="first">
  <xsl:value-of select="substring-before($source, $newline)"/>
</xsl:variable>
<xsl:variable name="rest">
  <xsl:value-of select="substring-after($source, $newline)"/>
</xsl:variable>

这是将$ rest插入自身的可恢复模板的一部分。

问题在于代码示例 undefined $ newline。
如果我将$ newline设置为字母(例如“s”),则文本会被很好地拆分(例如,它将输入“回响”变成“重新”和“回响”)。但是,当我尝试将$ newline设置为换行符(&#xa;&#xa0;)时,它将永久递归并给我带来了堆栈溢出。我还尝试为换行符定义一个ENTITY,但这没什么区别。

输入的每行末尾都有普通的CR / LF(我在Windows框上)。

任何人都知道我在做什么错,还是建议一种方法?

谢谢,
马蒂斯

最佳答案

如果可以使用EXSLT,请尝试str:tokenize

<xsl:for-each select="str:tokenize($source, $newline)">
  <xsl:value-of select="."/>
  <xsl:text>&#x0a;</xsl:text>
</xsl:for-each>

或类似地使用XSLT 2.0:
<xsl:for-each select="tokenize($source, $newline)">
  <xsl:sequence select="."/>
  <xsl:text>&#x0a;</xsl:text>
</xsl:for-each>

关于string - 在XSLT中,如何将元素的文本内容分成几行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9806149/

相关文章:

c++ - 在 C++ 中用一个字符分隔符分割字符串

xslt - 在 xslt 2.0 中使用时区将纪元转换为日期和时间

C++ 正则表达式无效字符(冒号)

PHP - 从包含 HTML 的字符串中突出显示文本

python - 加速 Python NLP 文本解析

java - 基于 Parens 将字符串拆分为更小的部分

xml - 对分组的父元素 XSLT 中的子元素进行分组

xml - 使用XSLT基于字符串模式自动创建xml模板

xml - 在 xslt 期间保留字符实体

c - 随机字符数组排序