ZVON > Tutorials > XML Schema and Relax NG Tutorial
Index | >> Example 1 / 10 << | Prev | Next |
Contents > Wildcard patterns > Attribute from any namespace

Attribute from any namespace

  1. XML Schema
  2. Relax NG
XML Schema keys: anyAttribute
Relax NG keys: anyName

1. XML Schema

The root element named "root" can have arbitrary number of any attributes from any namespace.

Valid document


<root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Valid document


<root xsi:noNamespaceSchemaLocation="correct_0.xsd" a="1" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Valid document


<root xsi:noNamespaceSchemaLocation="correct_0.xsd" x="2" baz:x="2" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:baz="http://baz" />

Correct XML Schema (correct_0.xsd)


<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >

  <xsd:element name="root">
    <xsd:complexType>
      <xsd:anyAttribute namespace="##any" processContents="skip"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

2. Relax NG

The element "anyName" says that the attribute can have any name from any namespace. The "anyName" and "nsName" elements (which represent an infinite number of names) must be repeated, so you can say only that you allow either 0+ (zeroOrMore) or 1+ (oneOrMore) such attributes. See (7.3. Restrictions on attributes).

Valid document


<root xmlns=""/>

Valid document


<root a="1" xmlns=""/>

Valid document


<root a="2" baz:x="2" xmlns="" xmlns:baz="http://baz" />

Correct Relax NG schema (correctRelax_0.rng)


<grammar xmlns="http://relaxng.org/ns/structure/1.0" >

  <start>
    <element>
      <name ns="">root</name>
      <zeroOrMore>
        <attribute>
          <anyName/>
          <text/>
        </attribute>
      </zeroOrMore>
      <text/>
    </element>
  </start>
</grammar>