У меня есть коллекция XML-файлов, каждый из которых описывает одно гибридное животное с его родителями.
На странице raport.html я отображаю таблицу со всеми животными, у каждого из которых есть отдельная ссылка на сайт xForms.
В моем файле xForms у меня есть
<?xml-stylesheet type="text/xsl" href="http://localhost:8080/exist/rest/db/apps/xsltforms/xsltforms.xsl"?><?xsltforms-options debug="no"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ev="http://www.w3.org/2001/xml-events"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:z="zwierzeta" xmlns:a="anatomia">
<head>
<title>XForms</title>
<xf:model>
<xf:instance resource="data/liger.xml"/>
<xf:submission id="update" resource="data/liger/xml" replace="none" method="put"/>
</xf:model>
</head>
<body>
<xf:input ref="/z:animals/z:animal/z:name">
<xf:label>Name:</xf:label>
<xf:hint>Nazwa</xf:hint>
</xf:input>
(...)
<xf:submit submission="update">
<xf:label>Save changes</xf:label>
</xf:submit>
<xf:trigger>
<xf:label>Add parent</xf:label>
<xf:action ev:event="DOMActivate">
<xf:insert ref="//z:hybrid/z:animal[last()]" position="after" at="last()"/>
<xf:setfocus control="nameInput"/>
</xf:action>
</xf:trigger>
<xf:trigger>
<xf:label>Delete parent</xf:label>
<xf:delete ref="//z:hybrid/z:animal" at="index('parent')" ev:event="DOMActivate"/>
</xf:trigger>
<a href="raport.html">HomePage</a>
</body>
</html>
Что работает хорошо, пока я пишу имя файла и не пытаюсь его изменить.
Как я могу передать различные xml-файлы в файл xForms, чтобы модель обновлялась с правильными данными для каждого животного?
Я пытался использовать функцию xQuery
declare function app:editFile($node as node(), $model as map(*)) {
let $name := request:get-parameter('animal', '')
let $a := (collection("/db/apps/projekt/data")/animals/animal[name=$name or hybrid//name=$name])[1]
let $file := "data/" || $a/name/text() || ".xml"
return
<xf:model>
<xf:instance resource="{$file}"/>
<xf:submission id="update" resource="{$file}" replace="none" method="put"/>
</xf:model>
};
и пытается отобразить результат в файле xForms, используя элемент с class="app:editFile"
, но он не работает.
Я тоже пробовал
<xf:model>
<xf:instance resource="concat('data/',get-request-parameter('animal'),'.xml')"/>
<xf:submission id="update" resource="concat('data/',get-request-parameter('animal'),'.xml')" replace="none" method="put"/>
</xf:model>
но этот тоже не работает.