如何让XForm显示一个复选框?

时间:2009-12-05 11:32:08

标签: xforms

我似乎在让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 个答案:

答案 0 :(得分:2)

您没有提到您要定位的XForms实现,但假设它是/它们完全符合,您有两个选择。

  1. 如果要在实例数据中指定类型,如示例代码所示,则需要将type属性放在XML架构实例命名空间中。因此,如果您已声明名称空间前缀xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance",则您的实例数据需要如下所示:

    <takeMoneyOff xsi:type="xs:boolean" />
    
  2. 或者,如果实例数据来自外部源并且您无法控制它,那么您可以在绑定元素本身上放置一个type属性(它不应该在xsi命名空间中)在这种情况下):

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

答案 1 :(得分: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()"/>