如何使用 xQuery 对转义的 XML 进行取消编码
我在 xQuery 中有一个类型为 xs:string 的变量,其值为编码的 HTML 片段(twitter 推文的内容)。它看起来像这样:
今日头条 •美联社来源: <b>奥巴马</b>挑选 司法职位撤回:新闻 - 休息 世界 - <a href="http://shar.es/mqMAG</a>" rel="noreferrer"> http://shar.es/mqMAG">http://shar.es/mqMAG</a>
当我尝试将其写入 HTML 块时,我需要对字符串进行转义,以便浏览器能够解释 HTML 代码段。相反,字符串按原样写出,浏览器将其渲染为文本(因此您会看到
{$entry/atom:content/text()}
我怎样才能对转义字符进行未编码,以便它写成 <而不是< ?
我尝试过像这样进行替换,但它总是替换 <与< !
fn:replace($s, "<", "<")
I have a variable in xQuery of type xs:string with the value of an encoded HTML snippet (the content of a twitter tweet). It looks like this:
Headlines-Today • AP sources:
<b>Obama</b> pick for
Justice post withdraws : News - Rest
Of World - <a
href="http://shar.es/mqMAG">http://shar.es/mqMAG</a>
When I try to write this out in an HTML block, I need the string to be unescaped so that the HTML snippet will be interpreted by the browser. Instead the string is getting written out as is and the browser is rendering it as just text (so you see <a href="blah.... ). Here's how I'm writing out this string:
{$entry/atom:content/text()}
How can I have the escaped characters unencoded so it writes < rather tha < ?
I've tried to do a replacelike this but it always replaces the < with < !
fn:replace($s, "<", "<")
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在 MarkLogic 中,您可以使用以下查询:
In MarkLogic you can use the below query:
在 eXist 中,使用 util:parse():
in eXist, use util:parse():
取决于您使用的 XQuery 处理器...最简单的方法是使用具有可以为您处理此问题的扩展的处理器。例如,对于 Saxon 和以下 XML:
您可以编写使用
saxon:parse()
XQuery > 函数来执行您想要的操作:结果是:
我认为大多数(?)XQuery 处理器都会有一个扩展来为您执行此操作。希望有帮助。
Depends on which XQuery processor you are using... The easiest way is to be using a processor that has an extension that handles this for you. For instance, with Saxon and the following XML:
You can write an XQuery that uses the
saxon:parse()
function to do what you want:The result from that is:
I think most(?) XQuery processors will have an extension to do this for you. Hope that helps.
从 XQuery 3 开始,您可以使用
parse-xml()
或parse-xml-fragment()
函数。另请参阅:since XQuery 3 you can use the
parse-xml()
orparse-xml-fragment()
functions. See also: