使用 xsd:assert 基于另一个元素创建一个元素 optional/mandatory
Make an element optional/mandatory based on another element using xsd:assert
我相信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
元素是可选的.
如何使用断言实现此目的?
test="not(Type=0 and not(Comment))"
来源: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>
我相信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
元素是可选的.
如何使用断言实现此目的?
test="not(Type=0 and not(Comment))"
来源: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>