Skip to content

XSD <any> Elements

How to use the XSD <any> element to extend XML schemas with undefined elements, enabling flexible schema design for extensible documents.

The <any> element is used to extend the XSD functionality. It is used to extend a complexType element defined in an XSD with an element that is not defined in the schema.

The <any> Element

Consider the following example. There is a piece of XML schema from family.xsd that shows a declaration for the "person" element.

By using the <any> element we can extend (after <lastname>) the content of "person" with any element:

family.xsdxml
<xs:element name="person">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="firstname" type="xs:string"/>
			<xs:element name="lastname" type="xs:string"/>
			<xs:any minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

Now we want to extend the person element with a children element. In this case we can do so, even if the author of the schema above never declared any children element.

children.xsdxml
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="https://tutorialreference.com"
	xmlns="https://tutorialreference.com"
	elementFormDefault="qualified">

<xs:element name="children">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="childname" type="xs:string" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

</xs:schema>

The XML file below (called Myfamily.xml), uses components from two different schemas: family.xsd and children.xsd:

MyFamily.xmlxml
<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns="http://tutorialreference.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tutorialreference.com family.xsd
https://tutorialreference.com children.xsd">

<person>
	<firstname>Tom</firstname>
	<lastname>Nolan</lastname>
	<children>
		<childname>Laura</childname>
	</children>
</person>

<person>
	<firstname>Ryan</firstname>
	<lastname>Reynolds</lastname>
</person>

</persons>
Navigation