在XQuery中保留HTML标记

时间:2009-07-28 15:00:00

标签: xquery

我正在将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>

现在,这非常有效 if 我只传入包含在一组标签中的数据(即<p>foo</p>)。如果我<p>foo</p><p>bar</p>,我会在$text中找到一个空值。

我一直在敲桌子一天半,现在试图弄清楚为什么这不起作用。任何帮助解决这个问题都将非常感激。

2 个答案:

答案 0 :(得分:0)

util:parse特别是问题,而不是代码的其余部分(我没有看到任何替代方法来执行您想要的操作)。您是否尝试过专门针对您在问题中提供的示例输入(即util:parse)测试<p>foo</p><p>bar</p>,以验证它确实没有正确解析多节点片段?

答案 1 :(得分:0)

猜测:<p>foo</p><p>bar</p>格式不正确(没有根元素)而<p>foo</p>格式正确(一个根元素)。

请尝试使用util:parse-html代替util:parse