使用 BaseX POST 方法在 xquery 中传递 < >
Passing < > in xquery with BaseX POST method
我正在使用 POST 方法更新 BaseX 数据库,我想将 xml 节点插入到 calastone 数据库中的现有文档 calastone.xml 中,如果该节点包含 '< ', returns 一个错误
”第 6 行):与元素类型 "variable" 关联的属性 "value" 的值不得包含“<”字符。“
代码:
<query>
<text>
let $message := '<Id>CTN53</Id>'
return insert nodes $message as last into doc("calastone/calastone.xml")
</text>
<variable name='message' value='<Id>CTN53</ID>'/>
</query>
不带“<”的相同代码会正确添加文本。
如何解决这个问题?
出现在属性和文本节点中的尖括号需要转义。对于属性,您应该使用 <
和 >
。对于文本节点,CDATA 部分通常更方便:
<query>
<text><![CDATA[
let $message := '<Id>CTN53</Id>'
return insert nodes $message as last into doc("calastone/calastone.xml")
]]></text>
<variable name='message' value='<Id>CTN53</ID>'/>
</query>
参见例如What characters do I need to escape in XML documents? 更多示例。
我正在使用 POST 方法更新 BaseX 数据库,我想将 xml 节点插入到 calastone 数据库中的现有文档 calastone.xml 中,如果该节点包含 '< ', returns 一个错误 ”第 6 行):与元素类型 "variable" 关联的属性 "value" 的值不得包含“<”字符。“
代码:
<query>
<text>
let $message := '<Id>CTN53</Id>'
return insert nodes $message as last into doc("calastone/calastone.xml")
</text>
<variable name='message' value='<Id>CTN53</ID>'/>
</query>
不带“<”的相同代码会正确添加文本。
如何解决这个问题?
出现在属性和文本节点中的尖括号需要转义。对于属性,您应该使用 <
和 >
。对于文本节点,CDATA 部分通常更方便:
<query>
<text><![CDATA[
let $message := '<Id>CTN53</Id>'
return insert nodes $message as last into doc("calastone/calastone.xml")
]]></text>
<variable name='message' value='<Id>CTN53</ID>'/>
</query>
参见例如What characters do I need to escape in XML documents? 更多示例。