Я пишу форму (betterFORMs/Xforms), которая будет отображаться пользователю с выбором флажков. Если флажок не установлен, форма должна связать "N" с элементом. Когда отмечен, "Y". Я понимаю, что на этот вопрос уже есть ответы, но я безуспешно пробовал все ответы.
Первое решение, которое я попытался использовать, это здесь - ссылка на stackoverflow
(первое решение выглядит хорошо, но я добился большего успеха с решением 2, так как я не использую Orbeon)
Приведенный ответ - это то, что я ищу, но у меня возникли проблемы с реализацией этого в моей форме. Я не использую Xhtml или Orbeon, поэтому привязка, которую я использую, кажется, отличается от той, что используется в решении.) Я попытался настроить этот код, чтобы он соответствовал моей форме, но я получаю повторяющуюся ошибку от синтаксического анализатора xml каждый раз, когда я загружаю страницу, но это не указывает мне ни на что, связанное с новым кодом.
Следующее решение, которое я пробовал, находится здесь - ссылка на stackoverflow
Этот ответ дал наилучшие результаты в моем коде, потому что значения флажка меняются на N, когда они не используются и когда они не выбраны. Проблема с этим решением заключается в том, что набор Y в элементе формы содержится в фигурных скобках - [].
пример вывода:
<addressProof>N</addressProof><other>[Y]</other><otherText>_text_</otherText>
Вот фрагмент моей формы:
модель:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns="http://www.w3.org/2002/06/xhtml2" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
<xsl:output method="xml" />
<xsl:template match="/">
<xforms:model id="documentsChecklist">
<xforms:instance>
<actionform xmlns="">
<xforms:model id="documentsChecklist">
<xforms:instance>
<actionform xmlns="">
<detail>
<other></other>
<otherText></otherText>
</detail>
</actionform>
</xforms:instance>
<xforms:bind id="other" nodeset="/actionform/detail/other" calculate="choose(. = 'Y', ., 'N')"/>
<xforms:bind nodeset="/actionform/detail/otherBox" relevant="/actionform/detail/other ='Y'" />
</xforms:model>
форма:
<div id="formBody"><br />
<xforms:select bind="other" appearance="full" align="right">
<xforms:item>
<xforms:label>Other</xforms:label>
<xforms:value>Y</xforms:value>
</xforms:item>
</xforms:select>
<xforms:input ref="/actionform/detail/otherText">
<xforms:label>Please specify:*</xforms:label>
</xforms:input>
</div>
</xsl:template>
</xsl:stylesheet>
Почему значение флажка теперь устанавливается на «[Y]» вместо «Y»? (Может быть, это как-то связано с массивом?) Спасибо.
ПС. Я знаю, что мог бы сделать это, используя логическое значение для каждого флажка, со значением флажка, соответствующим логическому значению, которое, в свою очередь, обновляет значение привязки. Мне бы не хотелось иметь большой блок логических элементов и привязок, поскольку у меня есть большое количество флажков. это решение имеет пример здесь - ссылка на stackoverflow
addressProof
, которого нет в модели. - person tohuwawohu   schedule 04.01.2014