我在xQuery类型的xQuery中有一个变量:string,带有编码的HTML片段的值(twitter推文的内容)。它看起来像这样:
头条新闻 - 今日&amp;#8226; AP来源: &安培; LT; B和GT;奥巴马&安培; LT; / B&安培; GT;选择 司法职位退出:新闻 - 休息 世界 - &amp; lt; a HREF =&安培; QUOT; http://shar.es/mqMAG">http://shar.es/mqMAG</a>
当我尝试在HTML块中编写此内容时,我需要转义字符串,以便浏览器解释HTML代码段。相反,字符串按原样写出来,浏览器将其呈现为文本(所以你看到&lt; a href =“blah ....)。这就是我写出这个字符串的方式:
{$条目/原子:内容/文本()}
如何将转义后的字符取消编码,以便写入&lt;而是tha&amp; lt; ?
我试图做替换,但它总是取代&amp; lt;与&amp; lt; !
fn:replace($ s,“&amp; lt;”,“&lt;”)
答案 0 :(得分:3)
在MarkLogic中,您可以使用以下查询:
let $d := '<a><c>asdf</c></a>'
return xdmp:unquote ($d)
答案 1 :(得分:3)
util:parse(concat("<top>","<c>asdf</c>",</top>"))
答案 2 :(得分:2)
取决于您使用的 XQuery 处理器......最简单的方法是使用具有扩展程序的处理器为您处理此问题。例如,使用 Saxon 和以下 XML :
<a><c>asdf</c></a>
您可以使用saxon:parse()
函数编写 XQuery 来执行您想要的操作:
declare namespace saxon = "http://saxon.sf.net/";
<a>{
saxon:parse(doc('test.xml')/a)
}</a>
结果是:
<a>
<c>asdf</c>
</a>
我认为大多数(?) XQuery 处理器都有扩展功能可以为您完成此操作。希望有所帮助。