如何创建一个XBL控件,将数据保存在两个元素中?

时间:2012-06-04 22:51:08

标签: xsd orbeon xforms xbl

我试图告诉Orbeon将2个字段组合在一起以捕获2个值,如下所示: 磅与盎司。

<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个文本框?

1 个答案:

答案 0 :(得分:1)

创建一个XBL组件是可行的方法,如果这是您第一次这样做,这可能会很棘手。一些指示:

  • 因此,您可以在表单生成器中使用它,您的组件需要绑定到一个元素(使用ref)。元素的名称将是表单作者在表单生成器中为控件提供的名称(假设他们没有使用自定义实例)。
  • 表单构建器将在控件的实例中创建一个元素。由于您的控件需要包含子元素,因此您需要告诉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>