XSD - <any> element

Het <any> element geeft ons de mogelijkheid om XML-documenten uit te breiden met elementen die niet zijn gedefinieerd in het schema!

Het <any> element

Het <any> element geeft ons de mogelijkheid om XML-documenten uit te breiden met elementen die niet zijn gedefinieerd in het schema!

Dit voorbeeld is afkomstig van de XML schema genaamd "family.xsd" en toont een verklaring voor het "person" element. Door gebruik te maken van het <any> element, kunnen we de inhoud van "person" uitbreiden met elk element (na het <lastname> element):

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string"/>
      <xs:any minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Nu hopen we te gebruiken "children" element om het "person" element uit te breiden. In deze situatie kunnen we dit doen, zelfs als de auteur van deze schema geen "children" element heeft vermeld.

Bekijk dit schema-bestand, genaamd "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.codew3c.com"
xmlns="http://www.codew3c.com"
elementFormDefault="qualified">
<xs:element name="children">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="childname" type="xs:string"
      maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

Het volgende XML-bestand (genaamd "Myfamily.xml") gebruikt componenten uit twee verschillende schema's, "family.xsd" en "children.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns="http://www.microsoft.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:SchemaLocation="http://www.microsoft.com family.xsd
http://www.codew3c.com children.xsd">
<person>
<firstname>David</firstname>
<lastname>Smith</lastname>
<children>
  <childname>mike</childname>
</children>
</person>
<person>
<firstname>Tony</firstname>
<lastname>Smith</lastname>
</person>
</persons>

Deze XML-bestand is geldig, omdat het schema "family.xsd" ons toestaat om het "person"-element uit te breiden door optionele elementen na het "lastname"-element toe te voegen.

<any> en <anyAttribute> kunnen beide worden gebruikt om uitbreidbare documenten te maken! Ze geven het document de mogelijkheid om extra elementen op te nemen die niet zijn gedeclareerd in het hoofd XML schema.