当我发现XML / XSD的断言功能时,我非常兴奋,然后我注意到它是版本1.1,遗憾的是我们无法使用它。
有没有办法用1.0实现断言?
示例,我们希望XSD限制仅限于XML文档中单独元素中指定的值,而不是XSD架构。
通过简单的限制,它可能看起来像:
<xs:element name="recordset">
<xs:complexType>
<xs:sequence>
<xs:element name="record" type="record" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="record">
<xs:sequence>
<xs:element name="tag" type="recordTag" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="recordTag">
<xs:restriction base="xs:string">
<xs:enumeration value="tag1" />
<xs:enumeration value="tag2" />
<xs:enumeration value="tag3" />
</xs:restriction>
</xs:simpleType>
我们希望在XML中指定标记限制,这些断言似乎是创建这些值的验证的方法。鉴于以下更改,xs:assert元素将进入记录集类型,将标记的内容与记录的内容进行比较 tagDefinitions 。
<xs:element name="recordset">
<xs:complexType>
<xs:sequence>
<xs:element name="tags" type="tagDefinitions" minOccurs="1" maxOccurs="1" />
<xs:element name="record" type="record" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="record">
<xs:sequence>
<xs:element name="tag" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="tagDefinitions">
<xs:sequence>
<xs:element name="tag" type="xs:string" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
这仍然可以在XML 1.0中使用吗?