为xml架构中的实际复杂类型的每个子元素声明属性

时间:2012-07-17 19:26:13

标签: xml xsd

是否可以在复杂类型上声明一个属性,该属性将从在此复杂类型中声明的每个元素继承?

我有一个用例,我需要注释xml中的每个元素,如果它已经改变了(@ mutated = {true | false})。我看到的唯一解决方案是将此属性添加到每个元素,这是非常令人毛骨悚然的。

1 个答案:

答案 0 :(得分:0)

好的,你不可能需要使用这个属性扩展每个类型并创建一个新类型。

以下是我对简单和复杂类型的定义:

扩展简单类型:

<xs:complexType name="areaMutatedType">
    <xs:simpleContent>
        <xs:extension base="register-ws:areaType">
            <xs:attribute ref="register-ws:mutated" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

扩展复杂类型:

<xs:complexType name="relationMutatedType">
    <xs:sequence>
        <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute ref="register-ws:mutated" use="optional"/>
</xs:complexType>

这里有一些很好的资源: