Я заранее прошу прощения, если я не спрашиваю об этом должным образом ... трудно выразить словами то, что я прошу ..
У меня есть модель XForms, такая как:
<file>
<criteria>
<criterion></criterion>
</criteria>
</file>
Я хочу иметь несколько текстовых полей ввода, которые создают новый тег критерия.
пользовательский интерфейс, такой как:
<xf:input ref="/file/criteria/criterion" model="select_data">
<xf:label>Select</xf:label>
</xf:input>
<xf:input ref="/file/criteria/criterion" model="select_data">
<xf:label>Select</xf:label>
</xf:input>
<xf:input ref="/file/criteria/criterion" model="select_data">
<xf:label>Select</xf:label>
</xf:input>
И я хотел бы, чтобы вывод XML выглядел следующим образом (после ввода информации пользователем):
<file>
<criteria>
<criterion>AAA</criterion>
<criterion>BBB</criterion>
<criterion>CCC</criterion>
</criteria>
</file>
То, как у меня это работает, не работает, так как видит, что 3 поля ввода ссылаются на один и тот же тег критерия. Как я могу дифференцироваться?
Спасибо! Я надеюсь, что это имело смысл!
НАЧАЛО ПЕРВОГО РЕДАКТИРОВАНИЯ
Спасибо за ответы на основное текстовое поле!
Однако теперь мне нужно сделать это с помощью списка. Но из жизни я не могу понять, как. Я где-то читал, чтобы использовать с событиями xforms: select и отменять выделение ... но я не знал, где их разместить, и места, которые я пробовал, вызывали у меня очень странное поведение.
В настоящее время я реализую следующее:
<xf:select ref="instance('criteria_data')/criteria/criterion" selection="" appearance="compact" >
<xf:label>Choose criteria</xf:label>
<xf:itemset nodeset="instance('criteria_choices')/choice">
<xf:label ref="@label"></xf:label>
<xf:value ref="."></xf:value>
</xf:itemset>
</xf:select>
Однако при отправке нескольких вариантов выбора все значения выбора вставляются в один и тот же узел через пробел.
Например:
Если AAA, BBB и FFF были выбраны из списка, это приведет к следующему XML:
<criterion>AAA BBB FFF</criterion>
Как мне изменить мой код, чтобы каждый выбор был в отдельном узле?
т.е. Я хочу, чтобы это выглядело так:
<criterion>AAA</criterion>
<criterion>BBB</criterion>
<criterion>FFF</criterion>
Спасибо!
КОНЕЦ ПЕРВОГО РЕДАКТИРОВАНИЯ
НАЧАЛО ВТОРОГО РЕДАКТИРОВАНИЯ:
Для списков (т. Е. Xf: select creation = "compact")
В итоге я позволил пробелам появляться в одном и том же узле, а затем просто преобразовал этот xml с помощью xsl для генерации правильно отформатированного нового документа xml (с отдельными отдельными узлами). К сожалению, я не нашел менее громоздкого решения, вставив их первоначально в отдельные узлы.
Однако выбранный ответ очень хорошо работает для текстовых полей, поэтому я выбрал его в качестве ответа.
КОНЕЦ ВТОРОГО РЕДАКТИРОВАНИЯ