XML Schema Tuto...login
XML Schema Tutorial
author:php.cn  update time:2022-04-20 14:13:02

XML Schema anyAttribute element


XSD <anyAttribute> Elements


<anyAttribute> The element gives us the ability to extend XML documents with attributes that are not specified by the schema ! The


<anyAttribute> element gives us the ability to extend XML documents with attributes that are not specified by the schema!

The following example is a fragment from an XML schema named "family.xsd". It shows us a declaration for 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 want to extend the "person" element with the "gender" attribute. In this case we can do this even though the author of the schema never declared any "gender" attribute.

Please 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 (named "Myfamily.xml") uses components 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.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>

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

<any> and <anyAttribute> can both be used to make scalable documents! They give the document the ability to contain additional elements not declared in the main XML schema.

php.cn