xsd:带有子项,属性和限制的complexType

时间:2016-08-02 03:48:47

标签: xml xsd xsd-validation xml-validation

我正在创建一个架构,但是我被困在我的根元素附近,将其定义为一个对这些属性有子,属性,限制的complexType

这是我到目前为止所尝试的......(百叶窗格式)

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsd:element name="foos">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="foo" type="FooType" minOccurs="1" maxOccurs="unbounded"/>
        </xsd:sequence>         
    </xsd:complexType>
</xsd:element>
<xsd:complexType name="FooType">
    <xsd:attribute name="exchangeType" type="xsd:string" use="required">
        <xsd:simpleType>
            <xsd:restriction base="xsd:string">
                <xsd:enumeration value="S" />
                <xsd:enumeration value="T" />
            </xsd:restriction>
        </xsd:simpleType>
    </xsd:attribute>
    <xsd:sequence>
        <xsd:element name="thing1" type="Thing1Type" />
        <xsd:element name="thing2" type="Thing2Type" />
    </xsd:sequence>
</xsd:complexType>
</xsd:schema>

我一直无法找到合并此属性及其限制的方法

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

两个主要更正:

  1. xsd:attribute声明不能同时具有本地声明 xsd:simpleType@type属性;删除了@type 属性。
  2. xsd:attribute之前无法显示xsd:sequence声明; 之后移动它。
  3. 已应用更正的XSD:

    此XSD具有上述更正和一些其他小修正,现在有效:

    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <xsd:element name="foos">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="foo" type="FooType" 
                         minOccurs="1" maxOccurs="unbounded"/>
          </xsd:sequence>         
        </xsd:complexType>
      </xsd:element>
      <xsd:complexType name="FooType">
        <xsd:sequence>
          <xsd:element name="thing1" type="Thing1Type" />
          <xsd:element name="thing2" type="Thing2Type" />
        </xsd:sequence>
        <xsd:attribute name="exchangeType" use="required">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:enumeration value="S" />
              <xsd:enumeration value="T" />
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:attribute>
      </xsd:complexType>
      <xsd:complexType name="Thing1Type"/>
      <xsd:complexType name="Thing2Type"/>
    </xsd:schema>