2012-06-04 27 views
0

我试图告诉Orbeon将2个字段组合在一起以捕获2个值,如: 磅&盎司。如何创建一个将数据保存在两个元素中的XBL控件?

<xs:complexType name="rpm-weight"> 
    <xs:sequence> 
     <xs:element name="weight-lbs" type="rpm-weight-lbs" minOccurs="1" maxOccurs="1"/> 
     <xs:element name="weight-oz" type="rpm-weight-oz" minOccurs="1" maxOccurs="1"> 
    </xs:sequence> 
</xs:complexType> 

我如何告诉Orbeon当选择rpm-weight时,它会生成2个文本框?

+0

这是与表单生成器,或自定义的XForms?你想要两个文本框,但将值存储在单个XML元素或属性中?请提供详情。 – ebruchez

+0

其实我会用xbl。我想将这些值保存为2个单独的值。我们想要做的是选择一个自定义的“体重控制”,它会添加2个文本框(一个用于磅,另一个用于盎司)。谢谢一堆 –

回答

1

创建一个XBL组件是要走的路,如果这是你第一次这样做可能会非常棘手。几点:

  • 所以你可以在Form Builder中使用它,你的组件需要绑定到一个元素(与ref)。元素的名称将是表单作者在Form Builder中为控件提供的名称(假设它们未使用自定义实例)。
  • 表单生成器将在控件的实例中创建一个元素。由于您的控件需要具有子元素,因此您需要告诉Form Builder有关这些元素的信息。你可以使用fb:metadata/fb:template/fb:instance来做到这一点。例如,请参阅autocomplete.xbl中的这个过程。例如。那部分元数据看起来如下。

示例表单生成的元数据XBL:

<fb:metadata xmlns:fb="http://orbeon.org/oxf/xml/form-builder"> 
    ... 
    <fb:templates> 
     <fb:instance> 
      <weight-lbs/> 
      <weight-oz/> 
     </fb:instance> 
     <fb:view> 
      ... 
     </fb:view> 
    </fb:templates> 
</fb:metadata> 
相关问题