eXist XQuery 将变量包装在 CDATA 中
我想知道是否可以将变量的内容(可能包含混乱的 html)包装到 cdata 部分中。
我正在将 XQuery 与 eXist 一起使用,但我似乎无法让它工作。
我尝试
<![CDATA[ $data ]]>
<![CDATA[ {$data} ]]>
过在这两种情况下变量都不会被其内容替换,而是分别保留 $data 和 {$data} 。
我还尝试使用 concat 和其他字符串函数,但这些导致 > 变成
<![CDATA[
。
$data 包含来自 html wysiwyg 编辑器的 http get/post 数据。
xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";
let $data := request:get-parameter("content" , "")
return <![CDATA[ {$data} ]]>
现在有人应该怎么做吗? 提前致谢。
I was wondering if it is possible to wrap the contents of a variable (that might contain messy html) into a cdata section.
I am using XQuery with eXist and I just can't seem to get it working.
I tried
<![CDATA[ $data ]]>
<![CDATA[ {$data} ]]>
In both cases the variable is not replaced by its contents, but remains $data and {$data} respectively.
I also tried using concat and other string functions, but these resulted in <![CDATA[
becoming <![CDATA[
.
The $data contains http get/post data from an html wysiwyg editor.
xquery version "1.0";
declare namespace request="http://exist-db.org/xquery/request";
let $data := request:get-parameter("content" , "")
return <![CDATA[ {$data} ]]>
Does anyone now how it should be done?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
@亚历杭德罗是对的。请参阅 Priscilla Walmsley 的 XQuery 书第 280-281 页。 “CDATA 部分中的所有文本均按字面意思理解;不可能在 CDATA 部分中包含封闭的表达式。”
如果您想通过修复格式错误的位来处理“混乱的 HTML”,您可能希望查看 NekoHTML 支持的 util:parse-html() 函数。传递杂乱的 HTML 字符串,您将在另一端得到格式良好的 XML 节点。
@Alejandro is right. See Priscilla Walmsley's XQuery book pp. 280-281. "All of the text in a CDATA section is taken literally; it is not possible to include enclosed expressions in a CDATA section."
If you want to deal with "messy HTML" by fixing malformed bits, you may wish to check out the NekoHTML-powered util:parse-html() function. Pass the messy HTML string, and you'll get well-formed XML node on the other end.
如果您想将一些格式良好但任意的 HTML 编码为字符串,例如包含在 KML 描述中,请使用 util:serialise()
例如。
效果与将 XML 包含在 CDATA 中相同,并对保留的 XML 字符进行编码。
If you want to encode some well-formed but arbitrary HTML as a string, for example to include in a KML description, use util:serialise()
eg.
The effect is the same as if the XML were enclosed in CDATA, with the reserved XML characters encoded.