Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

XML Schema any Attribute element


May 28, 2021 XML Schema


Table of contents


XSD and any Attribute elements

You can also make extensibility XML documents using the element of the .lt;anyAttribute?gt;


The element gives us the ability to extend XML documents with properties that are not specified by schema!


The element gives us the ability to extend XML documents with properties that are not specified by schema!

The following example is a fragment from XML schema called "family.xsd". I t shows us a declaration for the "person" element. By using the element, we can add any number of properties 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 want to extend the "person" element with the "gender" property. In this case we can do this, even if the author of this schema has never declared any "gender" attributes.

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.w3cschools.com"
xmlns="http://www.w3cschools.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 (named "Myfamily .xml") uses ingredients from different schemas, "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.w3cschools.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 schema "family.xsd" allows us to add properties to the "person" element.

Both slt;any and anyAttribute are available to produce scalable documents! They give the document the ability to contain additional elements that have not been declared in the main XML schema.