Exist-db使用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:标头(此处省略(,后面跟着

<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>

(很抱歉破坏了缩进,这只是摘录(我没有收到错误,这意味着我的应用程序:addPerson应该很好,对吧?我希望列表Pers_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的内容!

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

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

好吧,我为任何感兴趣的人提供了一个解决方案:

我的第一个代码段$person:= ...包含一个STRING,而不是一个元素。更改线路

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>

最新更新