我的所有XML属性都在不同的命名空间中,因此我的XSD从其他XSD引用它们。我有两个不同的元素,其属性具有相同的名称,但类型不同。
<integer ons:name="10" />
<string ons:name="string"/>
因此integer
元素的ons:name
属性为integer
,而string
元素的ons:name
属性为string
}。
如何在XSD中定义?目前我有:
<xs:element name="integer">
<xs:complexType>
<xs:attribute ref="ons:name" use="required"/>
</xs:complexType>
</xs:element>
然后在ons
命名空间的第二个XSD中,我有以下内容:
然后问题是第二个元素的属性没有办法用type
指定ref
,如果ref
引用了不同的属性,那么它会得到一个不同的名称
答案 0 :(得分:2)
在名称空间ons
的架构文档中,定义两个单例属性组:
<xs:attributeGroup name="name-int">
<xs:attribute name="name" type="xs:integer" use="required" form="qualified"/>
</xs:attribute-group>
<xs:attributeGroup name="name-str">
<xs:attribute name="name" type="xs:string" form="qualified"/>
</xs:attribute-group>
然后从复杂类型中引用属性组:
<xs:complexType>
<xs:attributeGroup ref="ons:name-int"/>
</xs:complexType>