Как я могу построить поисковое приложение, используя XForms
Я работаю над поисковым приложением, используя стандарты XForms. приложения ищут небольшой XML-файл, который содержит данные об учениках. Я написал запросы с использованием XQuery и попробовал их. результаты запросов в порядке, очень хорошо. но когда я соединяю их, используя XForms с экземпляром и представлениями, уровень представления (таблица xf:repeat, каждый raw - студент) вообще не обновляется. Я знаю, что запросы действительны. презентация хорошая, но я не уверен. Мой вопрос может помочь мне сделать рабочую копию этого приложения.
Модель как следовать
<xf:model>
<xf:action ev:event="xforms-ready">
<xf:send submission="load-data"/>
</xf:action>
<xf:instance xmlns="" id="studInstance">
<students>
<student>
<idStudent/>
<Name/>
<LastName/>
<Address/>
</student>
</students>
</xf:instance>
<xf:instance xmlns="" id="search">
<parameters>
<query/>
<field>Name</field>
</parameters>
</xf:instance>
<xf:submission id="load-data" method="get" serialization="none" action="modules/load.xql" replace="instance" instance="studInstance">
<xf:message ev:event="xforms-submit-error" level="ephemeral">Load operation failed </xf:message>
<xf:message ev:event="xforms-submit-done" level="ephemeral">Load operation Succeeded </xf:message>
</xf:submission>
<xf:submission id="search" action="modules/search.xql" method="post" serialization="none" ref="instance('search')" targetref="instance('studInstance')" replace="instance">
<xf:message ev:event="xforms-submit-error" level="ephemeral">Search operation failed </xf:message>
</xf:submission>
</xf:model>
результат будет привязан для повторения раздела здесь:
<xf:group>
<xf:repeat instance="studInstance" nodeset="/students/student">
<tr>
<td>
<xf:output ref="idStudent"/>
</td>
<td>
<xf:output ref="Name"/>
</td>
<td>
<xf:output ref="LastName"/>
</td>
<td>
<xf:output ref="Address"/>
</td>
</tr>
</xf:repeat>
</xf:group>
Так что не так с этим кодом!
1 ответ
Атрибут instance
не имеет смысла в xf:repeat. Правильный способ сделать то, что вы хотите, это использовать instance
функция внутри вашего XPath:
<xf:repeat nodeset="instance(studInstance)/student">