У меня есть база данных с документом xml, и я хочу отобразить преобразованный xml на моей странице xforms, когда отправка отправляется (я использую формы orbeon).
Мое решение состоит в том, что при подаче мой сервлет получает xml из базы данных, записывает его в файл, xslt преобразует дерево xml (когда и как я должен выполнить преобразование?), Но я не знаю, как отобразить этот файл на странице xforms. Может быть, может помочь атрибут replace = "instance", но я не знаю как.
Спасибо!
Теперь, после совета Алессандро, я пытаюсь использовать эту вещь xpl, но она не работает.
В модели:
<xforms:insert nodeset="instance('inst2')"
origin="xxforms:call-xpl('oxf:/resources/pipeline.xpl', 'data',
instance('inst1'), 'data')"/>
в pipe.xpl:
<p:config xmlns:p="http://www.orbeon.com/oxf/pipeline"
xmlns:oxf="http://www.orbeon.com/oxf/processors">
<p:param type="input" name="data"/>
<p:param type="output" name="data"/>
<p:processor name="oxf:xslt">
<p:input name="data" href="#data"/>
<p:input name="config" href="transform.xsl"/>
<p:output name="data" ref="data"/>
</p:processor>
Мой экземпляр, который я хочу преобразовать, - это "экземпляр жалобы", преобразованный экземпляр называется "trf-экземпляр", файл pipe.xpl находится в том же каталоге, что и моя страница xforms. Моя таблица стилей называется customerToOperator.xsl. Что не так в моем коде?
Я только что заметил примечание: «Если вы используете отдельное развертывание, служба и преобразование XSLT должны присутствовать в файле WAR Orbeon, а не в вашем приложении».
Эмм ... Куда мне положить эти файлы?
мое приложение в деталях:
а) Страница xforms, с 2 экземплярами:
<instance id='inst1'>
<name>
<lastname/>
<firstname/>
</name>
</instance>
<instance id='inst2'>
<fname>
<fullname/>
</fname>
</instance>
Я получил 2 поля ввода, на которые ссылаются имя / фамилия и имя / имя.
У меня есть узел xforms: insert, описанный выше, и узел представления xforms::
<xforms:submission
id="save-submission"
ref="instance('inst2')"
action="/my-servlet"
method="post"
replace="none">
Я добавил 2 файла в orbeon / WEB-INF / resources, pipe.xpl (как описано выше) и transform.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<fname>
<fullname>
<xsl:value-of select="name/firstname"/>
<xsl:value-of select="name/lastname"/>
</fullname>
</fname>
</xsl:template>
</xsl:stylesheet>
И у меня есть сервлет, который записывает опубликованный экземпляр на консоли (теперь он записывает inst2 на консоли, но без ввода данных пользователем, только узлы ...)
А действительно нужно это исправить ...
Еще раз спасибо!