XSD El elemento <anyAttribute >
¡El elemento <anyAttribute> nos permite extender el documento XML con atributos no especificados por el esquema!
El elemento <anyAttribute>
El elemento <anyAttribute> nos permite extender el documento XML con atributos no especificados por el esquema.
El siguiente ejemplo es un fragmento de un esquema XML denominado "familia.xsd". Muestra una declaración para el elemento "persona". Al usar el elemento <anyAttribute> podemos agregar cualquier cantidad de atributos al elemento "persona":
<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 el elemento "persona" con un atributo "color de ojos". En este caso podemos hacerlo, incluso si el autor del esquema anterior nunca declaró ningún atributo de "color de ojos".
Mire 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="https://www.w3schools.com"
xmlns="https://www.w3schools.com"
elementFormDefault="qualified">
<xs:attribute name="eyecolor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="blue|brown|green|grey"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:schema>
El archivo XML a continuación (llamado "Myfamily.xml") utiliza componentes de dos esquemas diferentes; "familia.xsd" y "atributo.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
https://www.w3schools.com attribute.xsd">
<person eyecolor="green">
<firstname>Hege</firstname>
<lastname>Refsnes</lastname>
</person>
<person eyecolor="blue">
<firstname>Stale</firstname>
<lastname>Refsnes</lastname>
</person>
</persons>
El archivo XML anterior es válido porque el esquema "familia.xsd" nos permite agregar un atributo al elemento "persona".
¡Los elementos <any> y <anyAttribute> se utilizan para hacer documentos EXTENSIBLES! Permiten que los documentos contengan elementos adicionales que no están declarados en el esquema XML principal.