eXist XQuery 将变量包装在 CDATA 中

发布于 2024-10-26 09:05:59 字数 629 浏览 0 评论 0原文

我想知道是否可以将变量的内容(可能包含混乱的 html)包装到 cdata 部分中。

我正在将 XQuery 与 eXist 一起使用,但我似乎无法让它工作。

我尝试

<![CDATA[ $data ]]>
<![CDATA[ {$data} ]]>

过在这两种情况下变量都不会被其内容替换,而是分别保留 $data 和 {$data} 。

我还尝试使用 concat 和其他字符串函数,但这些导致 > 变成 &lt;![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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

二智少女猫性小仙女 2024-11-02 09:05:59

@亚历杭德罗是对的。请参阅 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.

可遇━不可求 2024-11-02 09:05:59

如果您想将一些格式良好但任意的 HTML 编码为字符串,例如包含在 KML 描述中,请使用 util:serialise()

例如。

xquery version "1.0";
declare namespace util="http://exist-db.org/xquery/util";

let $data := <div><h1>stuff</h1><a href="url"> <img src="image"/></a></div>
return
   util:serialize($data,"method=xml"))

效果与将 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.

xquery version "1.0";
declare namespace util="http://exist-db.org/xquery/util";

let $data := <div><h1>stuff</h1><a href="url"> <img src="image"/></a></div>
return
   util:serialize($data,"method=xml"))

The effect is the same as if the XML were enclosed in CDATA, with the reserved XML characters encoded.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文