ZVON > Tutorials > XML Schema and Relax NG Tutorial
Index | >> Example 6 / 10 << | Prev | Next |
Contents > Wildcard patterns > Just one element from any namespace

Just one element from any namespace

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

1. XML Schema

The root element named "root" must have one arbitrary element from any namespace.

Valid document


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

Valid document


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

Invalid document
There must be one element under "root" (here is zero).


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

Invalid document
There must be one element under "root" - one element is extra here.


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

Correct XML Schema (correct_0.xsd)


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

  <xsd:element name="root">
    <xsd:complexType>
      <xsd:sequence minOccurs="1" maxOccurs="1">
        <xsd:any namespace="##any" minOccurs="1" maxOccurs="1" processContents="skip"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

Correct XML Schema (correct_1.xsd)
Because the default values of "minOccurs" and "maxOccurs" are 1, the code below is the same.


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

  <xsd:element name="root">
    <xsd:complexType>
      <xsd:sequence minOccurs="1" maxOccurs="1">
        <xsd:any namespace="##any" processContents="skip"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

2. Relax NG

The element "anyName" says that the element can have any name from any namespace.

Valid document


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

Valid document


<root xmlns="">
  <x:b xmlns:x="http://foo" />
</root>

Invalid document
There must be one element under "root" (here is zero).


<root xmlns=""/>

Invalid document
There must be one element under "root" - one element is extra here.


<root xmlns="">
  <a/>
  <x:b xmlns:x="http://foo" />
</root>

Correct Relax NG schema (correctRelax_0.rng)


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

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