xs:anyAttribute — Wildcard to replace any attribute.
<xs:anyAttribute id = xs:ID namespace = ( ( “##any” | “##other” ) | list of ( xs:anyURI | ( “##targetNamespace” | “##local” ) ) ) : “##any” processContents = ( “skip” | “lax” | “strict” ) : “strict” {any attributes with non-schema namespace} > Content: (xs:annotation?) </xs:anyAttribute>
May be included in: xs:attributeGroup (global definition), xs:complexType (local definition), xs:complexType (global definition), xs:extension (complex content), xs:extension (simple content), xs:restriction (complex content), xs:restriction (simple content)
xs:anyAttribute
is a wildcard that allows the
insertion of any attribute belonging to a list of namespaces. This
particle must be used wherever an attribute local declaration of
reference can be used (i.e., within complexType
or
attributeGroup
definitions).
The list of permitted namespaces is specified though the
namespace
attribute. The
namespace
attribute expects a list of namespace
URIs. In this list, two values have a specific meaning:
##targetNamespace
stands for the target namespace,
and ##local
stands for local attributes (without
namespaces). These values can be mixed in the list with regular
namespaces URIs. The whole list may also be replaced by two other
special values: ##any
stands for any namespace at
all and is the default value for the namespace
attribute and ##other
stands for any namespace
other than the target namespace. When ##other
is
used in a schema without a target namespace, all the namespaces are
allowed and only attributes without namespaces are forbidden.
The target namespace used to evaluate the special values
##targetNamespace
and ##other
is the target namespace (or lack of target namespace) of the schema
in which the xs:anyAttribute
wildcard is found.
This doesn’t change when one schema is imported into
another.
The behavior of the validator regarding the attributes that will be
allowed can be specified using the processContent
attribute. When processContent
is set to
strict
(i.e., the default values), the schema
processors must validate these attributes against their schemas and
report an error if they are not valid or if it
hasn’t been able to fetch the schemas for their
namespaces. When set to skip
, the processors do
not attempt to validate these attributes. When set to
lax
, the validator validates the attributes if it
can find a definition for them, and skips them if it
can’t.
When the processContent
is skip
(or when it is lax
and the schema processor
hasn’t been able to locate a schema for an
attribute, which is equivalent), the processor skips any further
validation of the accepted attributes that may belong to any
datatype.
When the processContent
is
strict
(or when it is lax
and
the schema validator has found a schema for them, which is
equivalent), the accepted attributes for the wildcard need to be
defined as global attributes in the schema for this namespace.
Some combinations of specifications of namespaces used to define multi-namespace open vocabularies are missing. These include the cases of “any namespace known in the current validation context” and its complementary “any namespace not defined in the current validation context.”
The behavior of the special value ##other
on
unqualified attributes in schemas with target namespaces is
contradictory in the W3C XML Schema Recommentation and should be
clarified in a future addendum. The most likely interpretation is
that unqualified attributes are not allowed when
##other
is specified in these schemas, even though
a passage of the Recommendation states the contrary.