Elemento <any> de XSD

El elemento <any> nos permite expandir el documento XML con elementos no especificados en el esquema!

Elemento <any>

El elemento <any> nos permite expandir el documento XML con elementos no especificados en el esquema!

Este ejemplo se refiere a un fragmento del esquema XML denominado "family.xsd". Muestra una declaración para el elemento "person" mediante el uso del elemento <any>, lo que nos permite expandir el contenido de "person" a través de cualquier elemento (después de <lastname>):

<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>

Ahora, queremos usar el elemento "children" para expandir el elemento "person". En este caso, podemos hacerlo incluso si el autor de este esquema no ha declarado ningún elemento "children".

Vea este archivo de esquema, denominado "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>

Este archivo XML (denominado "Myfamily.xml") utiliza componentes de dos diferentes esquemas, "family.xsd" y "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>

Este archivo XML es válido porque el esquema "family.xsd" nos permite expandir el elemento "person" a través de elementos opcionales después del elemento "lastname".

Ambos <any> y <anyAttribute> se pueden usar para crear documentos extensibles. ¡Los hacen capaces de contener elementos adicionales no declarados en el esquema XML principal!