Los últimos tutoriales de desarrollo web
 

El XSD <any> Element


La <any> elemento nos permite ampliar el documento XML con elementos no especificados por el esquema!


La <any> Element

La <any> elemento nos permite ampliar el documento XML con elementos no especificados por el esquema.

El siguiente ejemplo es un fragmento de un esquema XML llamado "family.xsd" . Muestra una declaración para la "person" elemento. Al utilizar el <any> elemento podemos extender (after <lastname>) el contenido de la "person" con cualquier elemento:

<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 extender la "person" elemento con un "children" elemento. En este caso podemos hacerlo, incluso si el autor del esquema anterior no declaró ninguna "children" elemento.

Mira este archivo de esquema, llamado "children.xsd" :

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3ii.com"
xmlns="http://www.w3ii.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>

El archivo XML siguiente (called "Myfamily.xml") , utiliza componentes de dos esquemas diferentes; "family.xsd" y "children.xsd" :

<?xml version="1.0" encoding="UTF-8"?>

<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.w3ii.com children.xsd">

<person>
  <firstname>Hege</firstname>
  <lastname>Refsnes</lastname>
  <children>
    <childname>Cecilie</childname>
  </children>
</person>

<person>
  <firstname>Stale</firstname>
  <lastname>Refsnes</lastname>
</person>

</persons>

El archivo XML anterior es válida porque el esquema "family.xsd" nos permite extender la "person" elemento con un elemento opcional después de que el "lastname" elemento.

La <any> y <anyAttribute> elementos se utilizan para hacer los documentos EXTENSIBLE! Permiten a los documentos contienen elementos adicionales que no están declarados en el esquema XML principal.