Los últimos tutoriales de desarrollo web
 

El XSD <anyAttribute> Element


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


La <anyAttribute> Element

La <anyAttribute> elemento nos permite ampliar el documento XML con atributos 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 <anyAttribute> elemento podemos añadir cualquier número de atributos a la "person" elemento:

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

Ahora queremos extender la "person" elemento con un "gender" atributo. En este caso podemos hacerlo, incluso si el autor del esquema anterior no declaró ningún "gender" atributo.

Mira este archivo de esquema, llamado "attribute.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:attribute name="gender">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:pattern value="male|female"/>
    </xs:restriction>
  </xs:simpleType>
</xs:attribute>

</xs:schema>

El archivo XML siguiente (called "Myfamily.xml") , utiliza componentes de dos esquemas diferentes; "family.xsd" y "attribute.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 attribute.xsd">

<person gender="female">
  <firstname>Hege</firstname>
  <lastname>Refsnes</lastname>
</person>

<person gender="male">
  <firstname>Stale</firstname>
  <lastname>Refsnes</lastname>
</person>

</persons>

El archivo XML anterior es válida porque el esquema "family.xsd" nos permite añadir un atributo a la "person" 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.