在 XQuery 中转义源 XML 中的大括号

Escaping curly brackets in source XML in XQuery

使用 XQuery(BaseX 实现),我需要处理一组 XML 记录,这些记录可能在元素文本中包含成对的大括号(例如,<a>Abc {de} fg</a>)。现在,我正在 XQuery 之外预处理记录,以确保这些字符已转义为双括号 (<a>Abc {{de}} fg</a>).

是否有标准方法在XQuery 中转义这些字符以防止它们作为表达式执行?

如果您想在查询中嵌入任意 UTF-8 编码的 XML 输入,您可以使用 XQuery 3.1 字符串构造函数和 fn:parse-xml:

let $string := ``[<a>Abc {de} fg</a>]``
return fn:parse-xml($string)

您唯一应该确保的是您的 XML 字符串不包含字符 ]``.

通常,最安全的方法是将您的输入保存在外部文件(或数据库)中,并通过 fn:docfn:collectionfetch:xml、[=16 对其进行寻址=],等等