[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2298
  • Last Modified:

XML validation error: Description: TargetNamespace.2: Expecting no namespace, but the schema document has a target namespace of ...

Hello,

The following error is reported in Oxygen XML but the parser does successfully validate my XML document against the given XSD:  "Description: TargetNamespace.2: Expecting no namespace, but the schema document has a target namespace of 'http://schemas/jupiter'."

Otherwise it appears to work. If I change noNamespaceSchemaLocation to schemaLocation the error changes to "There is no schema or DTD associated with the document" and the validation stops working. It appears that not using a namespace is not an option because the type used to validate the currency-short-name must be qualified with a namespace.

I would like this error to go away and ultimately have this properly defined.

Thank you,
Peter
Jupiter.xsd
 
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:jupiter="http://schemas/jupiter"
   targetNamespace="http://schemas/jupiter"
   elementFormDefault="unqualified" attributeFormDefault="unqualified">
   <simpleType name="currency-short-name-type">
      <restriction base="string">
         <enumeration value="EUR"/>
         <enumeration value="USD"/>
         <enumeration value="GBP"/>
         <enumeration value="CHF"/>
         <enumeration value="ON_EUR"/>
         <enumeration value="ON_GBP"/>
      </restriction>
   </simpleType>
   . . .
   <element name="estimate">
      <complexType>
         <sequence>
            <element name="estimate-currency" maxOccurs="unbounded">
               <complexType>
                  <sequence/>
                  <attribute name="name" type="string"/>
                  <attribute name="short-name" type="jupiter:currency-short-name-type"/>
                  <attribute name="exchange-rate" type="float"/>
               </complexType>
            </element>
    . . .
 
Sample.xml
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<jupiter:estimate name="XXX" description="X" rev-number="X"
    notice-to-proceed="2009-09-30" status="In Process" base-currency="EUR"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jupiter="http://schemas/jupiter" xsi:noNamespaceSchemaLocation="Jupiter.xsd"
    >
    <estimate-currency name="US Dollar" short-name="USD" exchange-rate="0.800000"/>
    <estimate-currency name="Euro" short-name="EURx" exchange-rate="1.000000"/>
 
Note: The above line correctly fails validation because EURx is not a valid currency-short-name-type

Open in new window

0
pdegregorio
Asked:
pdegregorio
  • 2
1 Solution
 
Geert BormansInformation ArchitectCommented:
xsi:noNamespaceSchemaLocation="Jupiter.xsd"

needs to become

xsi:schemaLocation="http://schemas/jupiter Jupiter.xsd"

if there is a targetNamespace, you need to point to it
before the space is the namespace, after the space is the location of the schema
0
 
pdegregorioAuthor Commented:
Thank you, that worked! Does anything appear embarrassingly out of kilter that I should look at?
0
 
Geert BormansInformation ArchitectCommented:
Welcome
Nothing embarrassing in this, it is a bit tricky anyway
It is the schema that decides whether you have a namespace or not in your XML
so if there is no targetnamespace in the schema use the reference as you did
if there is a target namespace, you need to reference that as well,
a bit perculiar, don't worry, now you know
0

Featured Post

Learn to develop an Android App

Want to increase your earning potential in 2018? Pad your resume with app building experience. Learn how with this hands-on course.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now