如何用XQuery替换特定节点

时间:2013-05-18 07:43:11

标签: xquery

我想将.<br />替换为.<p/>或其他标签。我想保持我的文本和其他标签不变。例如:

<div class="page">
     <div class="text">
          adsdfasdf<br/>sadasdsafg<br/>kkot.<br/>
          <div class="pagenumber">3</div>
     </div>
</div>

1 个答案:

答案 0 :(得分:2)

要解决标题中的问题(找到它),找到以点结尾的所有文本节点,获得第一个以下兄弟节点(如果查找下一个节点,我们也会返回<div>foobar.</div><br/>之类的节点)并测试它是否是<br/>节点(在这种情况下,只测试名称,我不在这里检查空虚)。

//text()[ends-with(., '.')]/following-sibling::node()[1]/self::br

重命名节点 - 您在问题正文中要求的内容 - 如下所示:

rename node //text()[ends-with(., '.')]/following-sibling::node()[1]/self::br as 'p'

重命名当然需要XQuery Update。只发现该节点也适用于任何XQuery 1.0甚至XPath 2.0处理器。