在XSD中定义复杂类型

时间:2018-05-28 16:23:28

标签: xml xsd xsd-validation

尝试定义一个也可以具有属性的复杂元素。 XML看起来像

<input name="foo" class="required" ....

我做:

<dummy id="asdsa">
   <Item> 
   </Item>
   <Item> 
   </Item>
<dummy>

更新:如果我将该属性放在序列之后就可以了。如果有人能给我答案的原因,我会给他们一个回答的问号:

<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="dummy">
      <complexType>
        <attribute name="id"/>
        <sequence>
        <element name="Item" minOccurs="0" maxOccurs="unbounded">
        </element>
        </sequence>
      </complexType>
    </element>
</schema> 

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="numero_etiqueta">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="13"/>
                <xs:maxLength value="13"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="codigo_objeto_cliente">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:maxLength value="20"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="objeto_postal">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="numero_etiqueta"/>
                <xs:element ref="codigo_objeto_cliente"/>                                               
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

答案 1 :(得分:0)

如您所知,Map<String,List<?>>声明必须在声明复杂类型声明的模型组之后。原因很简单,这就是XML Schema语法所需要的。 schema for schemas (s4s) meta-schema的相关摘录是

xs:attribute