1

我有三个元素 A、B 和 C。我想创建一个 XSD,其架构应该是 [A][B & C][A & B & C]的选择

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

提前致谢。MK

4

2 回答 2

1

您可以创建三个独立的元素组,例如 [A]、[B&C] 和 [A,B & C]。并在这些组之间定义一个compleType,就像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>
于 2012-05-17T08:50:13.050 回答
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 图

于 2012-05-17T11:08:47.257 回答