XSD三个元素之间的选择

时间:2012-05-17 05:40:04

标签: java xsd xsd-validation

我有三个元素A,B&amp; C.我想创建一个XSD,应该选择模式     [A] [B &amp; C] [A &amp; B &amp; < / strong> C]

Can anyone please help me to create an xsd for the above option.

先谢谢。 MK

2 个答案:

答案 0 :(得分:1)

你可以创建三个独立的元素组,如[A],[B&amp; C]和[A,B&amp; C]。 C]。并定义一个在这些组之间选择的类型,类似于XSD。不确定它是否有效。我没有XSD创作工具来验证它是否存在。

<xs:group name="Group1">
    <xs:sequence>
        <xs:element name="A"/>
    </xs:sequence>
</xs:group>

<xs:group name="Group2">
    <xs:sequence>
        <xs:element name="B"/>
        <xs:element name="C"/>
    </xs:sequence>
</xs:group>

<xs:group name="Group3">
    <xs:sequence>
        <xs:element name="A"/>
        <xs:element name="B"/>
        <xs:element name="C"/>
    </xs:sequence>
</xs:group>

<xs:complexType name="choice1">
    <xs:choice minOccurs="1" maxOccurs="1">
      <xs:group ref="Group1" />
      <xs:group ref="Group2"/>
      <xs:group ref="Group3"/>
    </xs:choice>
</xs:complexType>

答案 1 :(得分:1)

满足您的要求;想你可能会问的原因,它可能与独特粒子归因有关;下面的可选序列充当“虚拟”选择。

<?xml version="1.0" encoding="utf-8" ?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="root">
        <xsd:complexType>
            <xsd:choice>
                <xsd:sequence>
                    <xsd:element name="A"/>
                    <xsd:sequence minOccurs="0">
                        <xsd:element name="B"/>
                        <xsd:element name="C"/>
                    </xsd:sequence>
                </xsd:sequence>
                <xsd:sequence>
                    <xsd:element name="B"/>
                    <xsd:element name="C"/>
                </xsd:sequence>
            </xsd:choice>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

XSD Diagram