Solved

XSD: Attribute is not declared

Posted on 2006-06-09
2
3,841 Views
Last Modified: 2013-11-19
Hello,

I'm having a problem with some XML not being validated accordingly against my schema.  I know that the XML is correct.  However, I cannot seem to generate the appropriate XSD to validate the XML.

My XML is formated as follows:
<?xml version="1.0"?>

<entries xmlns="http://tempuri.org/Test.xsd">
      <entry>
            <person ssn="123-45-6789">firstName lastName</person>
                </entry>
</entries>

The Test.xsd file is formatted as follows:
<?xml version="1.0"?>
<xs:schema id="Test" targetNamespace="http://tempuri.org/Test.xsd" xmlns:mstns="http://tempuri.org/Test.xsd" xmlns="http://tempuri.org/Test.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">

                <xs:element name="entries" msdata:IsDataSet="false" msdata:EnforceConstraints="false">
                                <xs:complexType>
            <xs:choice maxOccurs="unbounded">
            <xs:element name="entry">
            <xs:complexType>
            <xs:sequence>
                                     <xs:element name="person" type="Person" />
                                     <xs:element name="occupation" type="xs:stirng" />
                                </xs:sequence>
                                </xs:element>
                                </xs:choice>
            </xs:complexType>
      </xs:element>

      <xs:complexType name="Person">
            <xs:simpleContent>
                  <xs:extension base="xs:string">
                        <xs:attribute name="ssn" type="xs:string" use="required"/>
                  </xs:extension>
            </xs:simpleContent>
      </xs:complexType>
</xs:schema>
      
I am using the .NET Framework.  When I attempt to validate this XML file using the Test.xsd file, I receive two messages for each <person> I have in my XML file.  The messages are:

"The 'ssn' attribute is not declared." and
"The required attribute 'http://tempuri.org/Test.xsd:ssn' is missing"

It's almost like my xml file is not accessing the correct xsl file.  However, if I remove an <occupation> element from the xml file, it throws an error stating that it's expecting the <occupation> so I know that is accessing the correct XSD file.  I'm really confused.  Thank you so much for your help
0
Comment
Question by:campbel8
2 Comments
 
LVL 12

Accepted Solution

by:
jkmyoung earned 250 total points
ID: 16870988
attributeFormDefault="qualified"
Change to
attributeFormDefault="unqualified"
Otherwise the attribute is expected to be in the namespace http://tempuri.org/Test.xsd"
0
 
LVL 60

Expert Comment

by:Geert Bormans
ID: 16871012
Hi campbel8,
> attributeFormDefault="qualified"

makes the parser expect a qualification for your attribute

This would be valid according your schema
(attributes require a hard prefix, they don't accept the default)

<entries xmlns="http://tempuri.org/Test.xsd" xmlns:tmp="http://tempuri.org/Test.xsd">
     <entry>
          <person tmp:ssn="123-45-6789">firstName lastName</person>
                </entry>
</entries>

this is a bit unworkable
set the value to unqualified and your XML will be valid as well


Cheers!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

The Confluence of Individual Knowledge and the Collective Intelligence At this writing (summer 2013) the term API (http://dictionary.reference.com/browse/API?s=t) has made its way into the popular lexicon of the English language.  A few years ago, …
Introduction Knockoutjs (Knockout) is a JavaScript framework (Model View ViewModel or MVVM framework).   The main ideology behind Knockout is to control from JavaScript how a page looks whilst creating an engaging user experience in the least …
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now