2009-12-05 54 views
1

我似乎有问题得到一个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实现()你是针对性的,但假设它是/他们完全符合,你有两种选择。

  1. 如果要指定实例数据的类型,如您的示例代码表明,你需要的类型属性是在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" /> 
    
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> 

使用合适的绑定,你甚至可以存储“假”出现空白时:

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