ZVON > Tutorials > XML Schema and Relax NG Tutorial |
Intro / Search / ZVON |
Index | >> Example 5 / 8 << | Prev | Next | |
The restriction is valid, because the namespaces "http://foo http://bar" are in the original set of the namespaces "http://foo http://bar http://baz". Schema Component Constraint: Particle Derivation OK (Any:Any - NSSubset) .
Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <x xmlns="http://foo" >1</x> </root> Valid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <x xmlns="http://bar" >1</x> </root> Invalid document <root xsi:noNamespaceSchemaLocation="correct_0.xsd" xmlns="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <x xmlns="http://baz" >1</x> </root> |
Correct XML Schema (correct_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="root" type="BBB"/> <xsd:complexType name="AAA"> <xsd:sequence> <xsd:any namespace="http://foo http://bar http://baz" minOccurs="1" maxOccurs="1" processContents="skip"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BBB"> <xsd:complexContent> <xsd:restriction base="AAA"> <xsd:sequence> <xsd:any namespace="http://foo http://bar" minOccurs="1" maxOccurs="1" processContents="skip"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:schema> |
The restriction is not valid, because the namespace "http://xxx" is not in the original set of the namespaces "http://foo http://bar http://baz". Schema Component Constraint: Particle Derivation OK (Any:Any - NSSubset) .
Incorrect XML Schema (incorrect_0.xsd) <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="root" type="BBB"/> <xsd:complexType name="AAA"> <xsd:sequence> <xsd:any namespace="http://foo http://bar http://baz" minOccurs="1" maxOccurs="1" processContents="skip"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="BBB"> <xsd:complexContent> <xsd:restriction base="AAA"> <xsd:sequence> <xsd:any namespace="http://xxx http://bar" minOccurs="1" maxOccurs="1" processContents="skip"/> </xsd:sequence> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:schema> |
Relax NG does not provide such complex derivations (correct me, if I am wrong), but we can very easily use the rules below.
Valid document <root xmlns=""> <x xmlns="http://foo" >1</x> </root> Valid document <root xmlns=""> <x xmlns="http://bar" >1</x> </root> Invalid document <root xmlns=""> <x xmlns="http://baz" >1</x> </root> |
Correct Relax NG schema (correctRelax_0.rng) |