在 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:doc
、fn:collection
、fetch:xml
、[=16 对其进行寻址=],等等
使用 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:doc
、fn:collection
、fetch:xml
、[=16 对其进行寻址=],等等