Может быть, это я, но кажется, что если у вас есть XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element name="GivenName" />
<xs:element name="SurName" />
</xs:sequence>
<xs:attribute name="ID" type="xs:unsignedByte" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>
который определяет схему для этого документа
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<GivenName></GivenName>
<SurName></SurName>
</User>
Не удалось проверить, добавили ли вы еще один элемент, скажем EmailAddress, и смешайте порядок
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<SurName></SurName>
<EmailAddress></EmailAddress>
<GivenName></GivenName>
</User>
Я не хочу добавлять EmailAddress в документ и отмечать его необязательно.
Я просто хочу, чтобы XSD проверял минимальные требования, предъявляемые к документу.
Есть ли способ сделать это?
EDIT:
marc_s указал ниже, что вы можете использовать xs:any
внутри xs:sequence
, чтобы разрешить больше элементов, к сожалению, вам нужно поддерживать порядок элементов.
В качестве альтернативы я могу использовать xs:all
, который не обеспечивает порядок элементов, но, увы, не позволяет мне помещать xs:any
внутри него.