ZVON > Tutorials > XML Schema and Relax NG Tutorial
Index | >> Example 1 / 4 << | Prev | Next |
Contents > Importing and combining multiple schemas > Importing schema and processContents "strict"

Importing schema and processContents "strict"

  1. XML Schema
XML Schema keys: import, processContents

1. XML Schema

If we use "any" or "anyAttribute" elements and set their attribute "processContents" to value "strict", those elements/attributes, which are represented by the "any/anyAttribute" pattern must: have definition and must be valid with respect to that definition 3.10.1 The Wildcard Schema Component .

Valid document
The file is valid, the "bar:x" elements are validated against their definition in file "correct_1.xsd".


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

Invalid document
This file is not valid, because the "processContents" attribute in Schema is set to "strict" and thus requires definitions for all elements occuring in "foo:root" element and we have provided only definitions for element "bar:x", not "x" from null namespace.


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

Invalid document
The file is not valid, the "bar:x" elements in file "correct_1.xsd" are defined as integers (and "aaa" does not represent an integer).


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

Correct XML Schema (correct_0.xsd)


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

  <xsd:import namespace="http://bar" schemaLocation="correct_1.xsd"/>

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

Correct XML Schema (correct_1.xsd)


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

  <xsd:element name="x" type="xsd:integer"/>
</xsd:schema>