如何使用xquery看到输入节点或任何其他数据更新的结果?

时间:2019-01-22 20:53:45

标签: xpath xquery

我想知道如何使用xquery通过xml查看数据更新的结果。你知道,插入节点...

例如,我有这个(我正在使用BaseX btw):

insert node
<dance id="7">
    <name>Foxtrot</name>
</dance>
before //Dances/dance[1]

这不是返回错误,但是在文件和任何位置都看不到结果。

1 个答案:

答案 0 :(得分:0)

如果您有这样的示例XML:

<?xml version='1.0' encoding='utf-8'?>
<Dances>
    <dance id="3">
        <name>Lambada</name>
    </dance>
    <dance id="7">
        <name>Foxtrot</name>
    </dance>
    <dance id="9">
        <name>Waltz</name>
    </dance>
</Dances>

您可以通过使用以下XQuery重构示例XML来插入新元素:

let $a      := for $x at $pos in doc("sample.xml")/Dances/dance return ($x)
let $insBef := 2
let $new    := <dance id='55'><name>Salsa</name></dance>
return
    <Dances>
        {insert-before($a,$insBef,$new)}
    </Dances>

这将在第二个节点之前插入“ Salsa”节点($ insBef = 2 =“ Foxtrot”)。结果是

<?xml version="1.0" encoding="UTF-8"?>
<Dances>
    <dance id="3">
        <name>Lambada</name>
    </dance>
    <dance id="55">
        <name>Salsa</name>
    </dance>
    <dance id="7">
        <name>Foxtrot</name>
    </dance>
    <dance id="9">
        <name>Waltz</name>
    </dance>
</Dances>