假设我有一个像这样的XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<Books>
<Book
Title="Animal Farm"
Author="George Orwell"
/>
</Books>
是否可以为此XML文件创建一个XSD,其中说:如果Book元素具有Title属性,那么Author属性也必须存在?请注意,我不是要求基于属性值的限制,只是属性名称。
答案 0 :(得分:1)
在XSD 1.0 中,您必须在应用程序级别强加该约束。
在XSD 1.1 中,您可以使用xs:assert
强加约束:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Books">
<xs:complexType>
<xs:sequence>
<xs:element name="Book" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Title"/>
<xs:attribute name="Author"/>
<xs:assert test="not(@Title) or @Author"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>