exist-db用XQUERY添加节点

Exist-db Add node with XQUERY

我有一个 listPers.xml(显然包含人员的 TEI 列表)。我想写一个函数来更新 listPers.xml 我的函数如下所示:

declare function app:addPerson($node as node(), $model as map(*)) {
    let $person := "<person xml:id=""><persName><forename>Albert</forename><surname>Test</surname></persName></person>"
    let $list := doc(concat($config:app-root, '/resources/listPers_test.xml'))
    return 
    update insert $person into $list//tei:listPerson
};

还有 listPerson.xml 看起来或多或少像一个带有人员条目的典型列表 我有一个 tei:header (此处省略)后跟

  <text>
        <body>
            <listPerson xml:id="person">
                <person xml:id="abbadie_jacques">
                    <persName ref="http://d-nb.info/gnd/100002307">
                        <forename>Jacques</forename>
                        <surname>Abbadie</surname>
                    </persName>
                    <note>Prediger der französisch-reformierten Gemeinde in <rs type="place" ref="#berlin">Berlin</rs>
                    </note>
                </person>
</body>
</text>
</TEI>

(抱歉打断了缩进,这只是摘录) 我没有收到错误,这意味着我的 app:addPerson 应该没问题,对吧? 我希望 listPers_test 看起来像这样:

   <text>
        <body>
            <listPerson xml:id="person">
                <person xml:id="abbadie_jacques">
                    <persName ref="http://d-nb.info/gnd/100002307">
                        <forename>Jacques</forename>
                        <surname>Abbadie</surname>
                    </persName>
                    <note>Prediger der französisch-reformierten Gemeinde in <rs type="place" ref="#berlin">Berlin</rs>
                    </note>
                </person>
    <!-- here comes the output that I wish to have :-) -->
    <person xml:id=""><persName><forename>Albert</forename><surname>Test</surname></persName></person>
    </body>
    </text>
    </TEI>

在长 运行 中,我的目标是一个 html 形式,允许用户输入名称等,其中使用诸如

之类的东西生成 ID
to-lowercase(concat($surname, "_", $forename));

但我不会深入探讨有关表单和 xquery 的问题,因为我几乎没有完成有关 html 表单和 xquery 的快速 Google 之旅!

谁能告诉我为什么我没有用第二个值更新 listPers_test.xml 文件? :-)

祝大家一切顺利,提前感谢大家, K

好的,我有一个解决方案供感兴趣的人使用:

我的第一个片段 $person:= ... 包含一个字符串,而不是 element.Changing 行

 let $person := "<person xml:id=""><persName><forename>Albert</forename><surname>Test</surname></persName></person>"

这个确实解决了问题:

 let $person := <tei:person xml:id=""><persName><forename>Albert</forename><surname>Test</surname></persName></tei:person>