No matching global declaration available for the validation root
You need to change your XML instance. Your current one says that there is a type called description in the namespace http://www.namespace.org/recipe. However, in your XSD definition, the only types exposed in that namespace are called recipe and descriptionType.
So either define a type called description in the XSD schema, or change your instance so you are referencing the recipe type correctly:
<?xml version="1.0" encoding="utf-8"?><r:recipe xmlns:r="http://www.namespace.org/recipe"> <description> <title>sugar cookies</title> </description></r:recipe>
UPDATE This is only half the solution - the other half is in @Aravind's answer here: https://stackoverflow.com/a/8426185/569662
Only global element definitions can be used as root elements. Your schema only has complex types and hence the error. Change the <xsd:complexType name="recipe">
to
<xsd:element name="recipe"> <xsd:complexType> <xsd:choice> <xsd:element name="description" type="descriptionType" minOccurs="1" maxOccurs="1" /> </xsd:choice> </xsd:complexType></xsd:element>
Read more about this here
In my practice, I got the No matching global declaration available for the validation root
in two cases:
If XSD does not contain an
<xsd:element name="recipe" .../>
explained in @aravind-r-yarram's answer.If
<recipe/>
in XML does not contain anxmlns
attribute. In such case adding thexmlns
will help:<recipe xmlns="http://www.namespace.org/recipe"> ... </recipe>