【发布时间】:2017-03-10 11:02:53
【问题描述】:
我正在尝试使用 XSLT 清理我们从 rss 提要中获得的一些数据。我想删除除 p 标记之外的所有标记。
Cows are kool.<p>The <i>milk</i> <b>costs</b> $1.99.</p>
我对如何在 1.0 或 2.0 中使用 XSLT 解决这个问题几乎没有疑问。
1)我看过这个例子https://maulikdhorajia.blogspot.in/2011/06/removing-html-tags-using-xslt.html
但是我需要 p 标签存在并且我需要使用正则表达式。我们可以使用 string-before-match 函数并以类似的方式执行。我认为这个函数在 xpath 中不存在。
2)我知道 replace 函数不能用于此,因为它需要一个字符串,如果我们传递任何节点,它会提取内容然后将其传递给函数,在这种情况下会破坏删除标签的目的。
在这个答案中我有点困惑,使用了替换 https://stackoverflow.com/a/18528749/745018。
3)我正在使用 xslt 在 nginx 服务器中执行此操作。
请在下面找到我们在 rss 提要的正文标签中获得的示例输入。
<p>The Supreme Court issued on Friday a bailable warrant against sitting Calcutta high court justice CS Karnan, an unprecedented order in a bitter confrontation between the judge and the top court.</p><p>A seven-judge bench headed by Chief Justice of India JS Khehar issued the order directing Karnan’s presence on <h2>March 31</h2> because the judge ignored an earlier court order summoning him.<i>Justice Karnan</i> had to appear</p>
更新:我也在为此寻找一个 xslt 函数
【问题讨论】:
-
请提供最少但完整的 XML 输入示例以及您想要的相应结果。我们需要查看 RSS 提要中的 HTML 是作为标记还是作为文本(在 CDATA 部分内)包含在内。我们还需要知道您是否希望 HTML 可以解析为 XML 或只能解析为 HTML。
-
@MartinHonnen 更新了一个示例输入。我需要返回 cdata 中的内容,除了 p 标签之外没有任何 html 标签。
标签: xml xslt replace strip-tags