首页 > 解决方案 > XSLT - text() 连接单词

问题描述

我有一个从 html 页面中选择文本的 xsl:

<content name="body_content">
  <xsl:apply-templates select="//body//text()"/>
</content>

它工作正常,删除所有 HTML 标记并仅选择正文标记之间的文本。

问题是当它删除 HTML 标记并选择它连接单词的文本时,例如:

<body>
  <u>Internet Access</u>
  <u>Web</u>
  <u>new cars</u>
</body>

它将产生一个像这样的 XML 字段:

<content name="body_content">Internet Accesswebnew cars</content>

这并不是真正的错误,因为它只按照指示选择文本,但由于单词连接,它对我不起作用。

我正在使用 XSL 1.0,有人知道有什么方法可以解决这个问题吗?

提前致谢

(html标签可能没有意义,我这样写只是为了这个例子)

标签: xmlxsltconcatenationxslt-1.0

解决方案


您可以text()使用以下模板修改节点:

<xsl:template match="text()[normalize-space(.) != '']">
  <txt><xsl:value-of select="." /><txt />       <!-- Customize this line -->
</xsl:template> 

在此示例中,每个非空text()节点都包含在一个<txt>元素中。但是您可以根据需要对其进行自定义。


推荐阅读