XSD抱怨“模型组中出现多个名为“B”的元素,其类型不同。”

XSD抱怨“模型组中出现多个名为“B”的元素,其类型不同。”,xsd,Xsd,我有以下XSD: <xs:complexType name="typeBroken"> <xs:choice> <xs:element name="B"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="FOO|BAR" /> </xs:restricti

我有以下XSD:

<xs:complexType name="typeBroken">
  <xs:choice>
    <xs:element name="B">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="FOO|BAR" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:sequence>
      <xs:element name="A">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="B">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value="3" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:choice>
</xs:complexType>

我是否正确理解您的要求?你想有一个。。。还有一个。。。。在此之前,但不是必需的

那么这个模式呢

<xs:complexType name="typeBroken">
  <xs:sequence>
    <xs:element name="A" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="5" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="B">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="FOO|BAR" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    </xs:sequence>
  </xs:choice>
</xs:complexType>
定义一个序列,其中第一个元素是可选的minOccurs=0,而第二个元素不是可选的

这能满足你的要求吗


Marc

A是可选的,是的,但对B的限制取决于A元素的存在和否。在您的解决方案中,无论A如何,B只能是FOO | BAR。如果A存在,我希望B有不同的验证。-维克多拉,好吧,恐怕这样的验证不能用XSD表示。
<test><B>BAZ</B></test>
cos-element-consistent: Error for type 'typeBroken'. Multiple elements with name 'B', with different types, appear in the model group.
<xs:complexType name="typeBroken">
  <xs:sequence>
    <xs:element name="A" minOccurs="0">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value="5" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    <xs:element name="B">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:pattern value="FOO|BAR" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
    </xs:sequence>
  </xs:choice>
</xs:complexType>