Как получить XForm для отображения флажка?

Кажется, у меня проблемы с получением xform отображать флажок - вместо этого он отображает текстовую область. Все мои другие предметы работают правильно, я просто не могу заставить этот работать.

Это код внутри моей модели:

<takeMoneyOff type="xs:boolean"/>

// close the my structure
// close the instance

<xf:bind id="takeMoneyOff" nodeset="/xForm/takeMoneyOff"/>

// close the model

И пункт, к которому все это относится для отображения:

<xf:input ref="takeMoneyOff" class="takeMoneyOffClass">
    <xf:label>Take Money Off? </xf:label>
</xf:input>

2 ответа

Вы также можете использовать <xforms:select>, который будет хранить значение или пробел:

<xf:select ref="takeMoneyOff" class="takeMoneyOffClass">
    <xf:label>Take Money Off? </xf:label>
    <xf:item>
        <xf:label>Yes</xf:label>
        <xf:value>true</xf:value>
    </xf:item>
</xf:select1>

С соответствующим связыванием вы можете даже хранить "false", когда появляется пробел:

<xf:bind id="takeMoneyOff" nodeset="/xForm/takeMoneyOff"
         calculate="choose(. = 'true', ., 'false')"
         readonly="false()"/>

Вы не упоминаете, на какую (-ие) реализацию (-и) XForms вы нацеливаетесь, но, предполагая, что они / они полностью соответствуют, у вас есть два варианта.

  1. Если вы хотите указать тип в данных экземпляра, как показывает пример кода, вам нужно, чтобы атрибут type был в пространстве имен экземпляра схемы XML. Итак, если вы объявили префикс пространства имен xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance", ваш экземпляр данных должен выглядеть следующим образом:

    <takeMoneyOff xsi:type="xs:boolean" />
    
  2. В качестве альтернативы, если данные экземпляра поступают из внешнего источника, и вы не контролируете их, вы можете вместо этого поместить атрибут типа в сам элемент связывания (в этом случае он не должен находиться в пространстве имен xsi):

    <xf:bind id="takeMoneyOff" nodeset="/xForm/takeMoneyOff" type="xs:boolean" />
    
Другие вопросы по тегам