我有一个简单类型的简单模式定义:
<xs:simpleType name="std_types-bit-type">
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
其他地方:
<xs:element name="comp" type="std_types-bit-type"/>
然后可以创建如下的XML元素:
<comp>1</comp>
我想让文档创建者添加任意(对我来说,但对他们有意义)属性,例如:
<comp index="2">1</comp>
由于我无法事先知道所有可能的属性,xs:anyAttribute
仅适用于这种情况。实际上,为complexTypes定义它很简单。问题在于我无法找到模式元素的神奇组合,这使我可以将xs:anyAttribute
与simpleType / simpleContent限制关联起来。
我无法想象这是不可能的,但它到目前为止一直在打败我。
答案 0 :(得分:0)
当通过扩展派生类型时,可以添加属性;可以添加facet通过限制派生的类型。 所以,请允许自己两个定义 ...
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="std_types-bit-base-type">
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="std_types-bit-type">
<xs:simpleContent>
<xs:extension base="std_types-bit-base-type">
<xs:anyAttribute/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>