1

我似乎在让 axform显示一个复选框时遇到问题——而是显示一个文本区域。我所有的其他项目都正常工作,我似乎无法让这个工作。

这是我模型中的代码:

<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>
4

2 回答 2

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()"/>
于 2009-12-13T02:52:08.713 回答
2

您没有提及您的目标是哪个 XForms 实现,但假设它/它们完全符合,您有两个选择。

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

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

    <xf:bind id="takeMoneyOff" nodeset="/xForm/takeMoneyOff" type="xs:boolean" />
    
于 2009-12-08T11:45:26.540 回答