No matching global declaration available for the validation root No matching global declaration available for the validation root xml xml

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 an xmlns attribute. In such case adding the xmlns will help:

      <recipe xmlns="http://www.namespace.org/recipe">      ...  </recipe>