Validando XML com XSDs ... mas ainda permite extensibilidade
Talvez seja eu, mas parece que se você tiver um 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>
que define o esquema para este documento
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<GivenName></GivenName>
<SurName></SurName>
</User>
Não seria possível validar se você adicionasse outro elemento, diga EmailAddress e misture o pedido
<?xml version="1.0" encoding="utf-8" ?>
<User ID="1">
<SurName></SurName>
<EmailAddress></EmailAddress>
<GivenName></GivenName>
</User>
Não quero adicionar EmailAddress ao documento e ter a opção opcional.
Eu só quero um XSD que valide os requisitos mínimos que o documento deve atender.
Existe uma maneira de fazer isso?
EDITAR:marc_s apontou abaixo que você pode usarxs:any
dentro dexs:sequence
para permitir mais elementos, infelizmente, você precisa manter a ordem dos elementos.
Como alternativa, eu posso usarxs:all
que não impõe a ordem dos elementos, mas, infelizmente, não me permite colocarxs:any
dentro dele.