Maybe it's me, but it appears that if you have an 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>
that defines the schema for this document
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<GivenName></GivenName>
<SurName></SurName>
</User>
It would fail to validate if you added another element, say EmailAddress, and mix up the order
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<SurName></SurName>
<EmailAddress></EmailAddress>
<GivenName></GivenName>
</User>
I don't want to add EmailAddress to the document and have it be marked optional.
I just want an XSD that validates the bare minimum requirements that the document must meet.
Is there a way to do this?
EDIT:
marc_s pointed out below that you can use xs:any
inside of xs:sequence
to allow more elements, unfortunately, you have to maintain the order of elements.
Alternatively, I can use xs:all
which doesn't enforce the order of elements, but alas, doesn't allow me to place xs:any
inside of it.