The anyAttribute element enables the author to extend the XML document with attributes not specified by the schema.
Parent elements: complexType, restriction (both simpleContent and complexContent), extension (both simpleContent and complexContent), attributeGroup
<anyAttribute
id=ID
namespace=namespace
processContents=lax|skip|strict
any attributes
>
(annotation?)
</anyAttribute>
(The ? sign declares that the element can occur zero or one time inside the anyAttribute element)
id - Optional. Specifies a unique ID for the element
namespace - Optional. Specifies the namespaces containing the attributes that can be used. Can be set to one of the following:
##any - attributes from any namespace is allowed (this is default)
##other - attributes from any namespace that is not the namespace of the parent element can be present
##local - attributes must come from no namespace
##targetNamespace - attributes from the namespace of the parent element can be present
List of {
URI references of namespaces, ##targetNamespace, ##local} - attributes from a space-delimited list of the namespaces can be present
processContents - Optional. Specifies how the
XML processor should handle validation against the elements specified by this any element. Can be set to one of the following:
any attributes - Optional. Specifies any other attributes with non-schema namespace
The following example shows a declaration for an element called “person”. By using the <anyAttribute> element the author 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>