Latest web development tutorials

XML Schema anyAttribute element

<AnyAttribute> element enables us to extend the XML document properties are not specified by the schema!


<AnyAttribute> element enables us to extend the XML document properties are not specified by the schema!

The following example is a fragment from the XML schema named "family.xsd" of. It shows us a statement against the "person" element. By using the <anyAttribute> element, we can add any number of attributes to the "person" element:

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

Now, we hope that through the "gender" attribute to extend the "person" element. In this case, we can do so, even if the author of the schema above never declared any "gender" attribute.

Look at this schema file named "attribute.xsd":

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

The following XML (called "Myfamily.xml"), the use of ingredients from different schema's, "family.xsd" and "attribute.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.w3schools.com attribute.xsd">

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

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

</persons>

This XML file above is valid because the schema "family.xsd" allows us to add attributes to the "person" element.

<Any> and <anyAttribute> can be used to create scalable document! They have the ability to make the document did not contain a statement of the main XML schema through additional elements.