对于ComplexType,属性不按顺序排列

时间:2014-10-15 14:13:40

标签: xml xsd complextype

我正在尝试编写XML模式文件 用户可以在其中添加多个地址 我按此顺序写了字段

    Address1

    Address2

    Address3

    AddressType

    City

    State

    Country

    ZIP

我只是在这里编写示例代码。

    <complexType name="Addresses_Type">
        <sequence>
            <element name="Address" type="tns:Address_Type" maxOccurs="unbounded" minOccurs="1" ></element>
        </sequence>
    </complexType>

    <complexType name="Address_Type">
        <attribute name="Address1"      type="string" use="required"></attribute>
        <attribute name="Address2"      type="string" use="required"></attribute>
        <attribute name="Address3"      type="string" use="required"></attribute>
        <attribute name="AddressType"   type="string" use="required"></attribute>
        <attribute name="City"          type="string" use="required"></attribute>
        <attribute name="State"         type="string" use="required"></attribute>
        <attribute name="Country"       type="string" use="required"></attribute>
        <attribute name="ZIP"           type="string" use="required"></attribute>
    </complexType>

但是,当用户想要添加新地址时

字段的顺序不同。 在我的情况下,它按照以下顺序发生

    ZIP

    State

    City

    Address3

    Country

    AddressType

    Address2

    Address1

为什么它以随机顺序提供属性。 是否有任何方法可以获得我在架构中提到的订单。

1 个答案:

答案 0 :(得分:0)

You cannot enforce the ordering of attributes in an XML document

如果排序很重要,您应该将这些内容定义为包含内容的元素,而不是属性。然后,您可以使用<xs:sequence>强制执行订购。

向您呈现属性的顺序将取决于XML文档中的内容,以及如何实现为您提供属性的解析器。在任何情况下,您都不应该依赖于按某种顺序显示的属性,即使文档总是以某种顺序提供它们。此外,架构无法强制文档必须以某种顺序提供它们。