ZVON > Tutorials > XML Schema and Relax NG Tutorial
Index | >> Example 2 / 3 << | Prev | Next |
Contents > attributeFormDefault > Target namespace is not null, attributeFormDefault is unqualified

Target namespace is not null, attributeFormDefault is unqualified

  1. unqualified
  2. Relax NG - attribute from null namespace
XML Schema keys: attributeFormDefault, attribute
Relax NG keys: attribute, ns

1. unqualified

When the form is "unqualified" (default behaviour), the attributes must be from the null namespace.

Valid document
The attribute "xx" must be from null namespace.


<f:root xsi:schemaLocation="http://foo correct_0.xsd" xx="1" xmlns:f="http://foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Invalid document


<f:root xsi:schemaLocation="http://foo correct_0.xsd" f:xx="1" xmlns:f="http://foo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />

Correct XML Schema (correct_0.xsd)


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

  <xsd:element name="root">
    <xsd:complexType>
      <xsd:attribute name="xx" type="xsd:string" use="required"/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

2. Relax NG - attribute from null namespace

We can set the namespace using the "ns" attribute, but if we want the attributes to be from some non-null namespace, we must explicitly put the "ns" attribute either to the "attribute/name" element or to the "attribute[@name]" element.

Valid document


<f:root xx="1" xmlns:f="http://foo" />

Invalid document
The attribute "xx" must be from null namespace.


<f:root f:xx="1" xmlns:f="http://foo" />

Correct Relax NG schema (correctRelax_0.rng)


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

  <start>
    <element name="root">
      <attribute name="xx">
        <text/>
      </attribute>
      <empty/>
    </element>
  </start>
</grammar>