Background
Validate an XML document using a schema.
Problem
The simplest form of the problem is shown in two files.
XML Document file.xml
<?xml version="1.0"?>
<recipe xmlns:r="http://www.namespace.org/recipe">
<r:description>
<r:title>sugar cookies</r:title>
</r:description>
</recipe>
XSD Document schema.xsd
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
version="1.0"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:r="http://www.namespace.org/recipe">
<xsd:complexType name="recipe">
<xsd:choice>
<xsd:element name="description" type="descriptionType"
minOccurs="1" maxOccurs="1" />
</xsd:choice>
</xsd:complexType>
<xsd:complexType name="descriptionType">
<xsd:all>
<xsd:element name="title">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5" />
<xsd:maxLength value="55" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:schema>
Error
The full error message from xmllint:
$ xmllint --noout --schema schema.xsd file.xml
file.xml:2: element recipe: Schemas validity error : Element 'recipe': No matching global declaration available for the validation root. file.xml fails to validate
Question
What is the correct syntax (or what schema attributes are missing) to ensure that the given schema can be used to successfully validate the given XML document?
description
,title
etc. should also have namespace (r:description
etc.). – Tassel