我有一个如下所示的XML:
<group type="body">
<element type="body">Some <strong>text</strong></element>
<element type="body">Some text <a href="http://www.foo.bar">link</a> more text</element>
</group>
我想要一个看起来像这样的结果:
<p>Some <strong>text</strong></p>
<p>Some text <a href="http://www.foo.bar">link</a> more text</p>
目前我的XPath看起来像这样:
concat('<p>',string-join(/*:group[@type = 'body']/*:element[@type = 'body']/normalize-space(), '</p>
<p>'), '</p>')
我的问题是,我找不到可以在结果中加入<a>
和<strong>
的解决方案。谁知道如何解决这个问题?
答案 0 :(得分:0)
XPath只能用于定位源文档中的节点,它不能用于构造新节点,也不能用于构造和操作源中节点的XML序列化。对于那份工作,你需要XSLT或XQuery。
(实际上,使用XPath 3.1,你可以通过利用新的fn:parse-xml和fn:serialize函数来实现这一点。但XQuery / XSLT仍然是一个更好的解决方案,特别是因为很少有处理器支持XPath 3.1而不支持XSLT或XQuery或两者兼而有之。)