我相信XSD 1.1有断言允许条件逻辑。
我有这样的架构:
<xs:element minOccurs="0" maxOccurs="1" name="Type" type="xs:integer" />
<xs:element minOccurs="0" maxOccurs="1" name="Comment" type="xs:string" />
我希望Comment
部分仅在Type
为0时才是强制性的。如果Type
是其他任何内容,我希望Comment
元素是可选的。< / p>
如何使用断言实现此目的?
答案 0 :(得分:4)
test="not(Type=0 and not(Comment))"
答案 1 :(得分:2)
信用:Michael Kay,George Boole和Augustus De Morgan。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Type" type="xs:integer" />
<xs:element minOccurs="0" maxOccurs="1" name="Comment" type="xs:string" />
</xs:sequence>
<xs:assert test="Comment or not(Type = 0)"/>
</xs:complexType>
</xs:element>
</xs:schema>