【问题标题】:Preserving HTML tags inside XQuery在 XQuery 中保留 HTML 标记
【发布时间】:2009-07-28 15:00:00
【问题描述】:

我正在将 eXist 用于一个工作项目,但我遇到了一个我似乎无法找到解决方案的问题。

我有一个 xquery 脚本正在更新数据库中已有的现有文档。需要更新的部分数据包含 HTML,特别是 <p></p> 标记。我无法让 eXist/XQuery 停止转义 HTML。它需要以原始形式保存。这是我正在做的一个非常简单的版本:

<pre>
declare variable $raw-content := request:get-parameter('content', '')
declare variable $content := local:clean($raw-content)
</pre>

local:clean 是以下函数:

<pre>
declare function local:clean($text) {
     let $text := util:parse($text)
     return $text
};
</pre>

稍后在代码中我更新了一个特定的 XML 元素

<pre>
{update replace $n/sports-content/article/nitf/body/body.content with <body.content>{$content}</body.content>}
</pre>

现在,这很完美如果我只传递包装在一组标签中的数据(即&lt;p&gt;foo&lt;/p&gt;)。如果我执行&lt;p&gt;foo&lt;/p&gt;&lt;p&gt;bar&lt;/p&gt;,我会在$text 中得到一个空值。

我已经把头撞在桌子上一天半了,现在想弄清楚为什么这不起作用。任何解决此问题的帮助将不胜感激。

【问题讨论】:

    标签: xquery


    【解决方案1】:

    这似乎是util:parse 的问题,而不是你的代码的其余部分(我在这里看不到任何替代方法来做你想做的事)。您是否尝试过专门针对您在问题中提供的示例输入(即&lt;p&gt;foo&lt;/p&gt;&lt;p&gt;bar&lt;/p&gt;)测试util:parse,以验证它确实没有正确解析多节点片段?

    【讨论】:

      【解决方案2】:

      猜测:&lt;p&gt;foo&lt;/p&gt;&lt;p&gt;bar&lt;/p&gt; 格式不正确(没有根元素),而 &lt;p&gt;foo&lt;/p&gt; 格式正确(一个根元素)。

      所以试试util:parse-html 而不是util:parse

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-19
        • 1970-01-01
        • 2011-05-13
        • 2013-04-15
        • 2021-07-08
        • 2021-08-30
        • 2014-05-07
        • 2020-03-19
        相关资源
        最近更新 更多