xml - 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标签可能没有意义,我这样写只是为了这个例子)
解决方案
您可以text()
使用以下模板修改节点:
<xsl:template match="text()[normalize-space(.) != '']">
<txt><xsl:value-of select="." /><txt /> <!-- Customize this line -->
</xsl:template>
在此示例中,每个非空text()
节点都包含在一个<txt>
元素中。但是您可以根据需要对其进行自定义。
推荐阅读
- hive - Hive:使用分区在 hive 表中查找最新日期
- http - 浏览器如何处理 Cache-Control 标头中的 `no-cache="Set-Cookie"`
- php - 使用嵌套的 for/foreach 循环时文件意外结束
- javascript - 如何在 React 中使内联样式使用状态?
- json.net - 如何将十进制序列化为字符串?
- go - 使用 * 实例化 var 时,单例测试不起作用
- r - 如何在 knitr::kable 函数中格式化数字
- r - 如何计算r中包含特定字符串的列数?
- vue.js - 在 vuetify 数据表上导出到 excel
- varnish - 无法从 nginx/varnish 获取 real-ip 传递,总是显示 127.0.0.1