如何在xforms中实现case / switch

时间:2015-01-12 15:12:36

标签: orbeon xforms

我有选择声明的xsd

<xs:complexType name="opt_type">
    <xs:choice>
        <xs:element name="opt_1_1" minOccurs="0">
            <xs:simpleType>
                <xs:restriction base="xsd:string">
                    <xs:enumeration value="opt_1_1 value 1"/>
                    <xs:enumeration value="opt_1_1 value 2"/>
                    <xs:enumeration value="opt_1_1 value 3"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        <xs:element name="opt_1_2" minOccurs="0">
            <xs:simpleType>
                <xs:restriction base="xsd:string">
                    <xs:enumeration value="opt_1_2 value"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
        <xs:element name="opt_1_3" minOccurs="0">   
            <xs:simpleType>
                <xs:restriction base="xsd:string">
                    <xs:enumeration value="opt_1_3 value"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:element>
    </xs:choice>
</xs:complexType>

...

<xs:element name="opt" maxOccurs="unbounded">
    <xs:complexType>
        <xs:sequence>
            ...
            <xs:element name="opt_1" type="myns:opt_type" minOccurs="0"></xs:element>
            ...
        </xs:sequence>
    </xs:complexType>
</xs:element>

我需要xforms(我和Orbeon一起工作),根据用户的选择,我会根据这些节点给出xml:

<myns:opt_1>
    <myns:opt_1_1>opt_1_1 value 1</myns:opt_1_1> 
</myns:opt_1>

<myns:opt_1>
    <myns:opt_1_1>opt_1_1 value 2</myns:opt_1_1> 
</myns:opt_1>

<myns:opt_1>
    <myns:opt_1_1>opt_1_1 value 3</myns:opt_1_1> 
</myns:opt_1>

<myns:opt_1>
    <myns:opt_1_2>opt_1_2 value</myns:opt_1_1> 
</myns:opt_1>

<myns:opt_1>
    <myns:opt_1_3>opt_1_3 value</myns:opt_1_1> 
</myns:opt_1>

我怎样才能实现这一目标? 如何构建xforms?

1 个答案:

答案 0 :(得分:0)

简而言之,您希望更改XML的结构(使用不同的元素名称)。为此,您的工具应该是使用xf:insertxf:delete的操作,以插入和删除元素。您需要手动执行此操作&#34;,因为XForms引擎不会根据架构自动为您执行此操作。