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>
我有一个 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 形式,允许用户输入名称等,其中使用诸如
之类的东西生成 IDto-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>