• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4335
  • Last Modified:

XSD: Attribute is not declared

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
campbel8
Asked:
campbel8
1 Solution
 
jkmyoungCommented:
attributeFormDefault="qualified"
Change to
attributeFormDefault="unqualified"
Otherwise the attribute is expected to be in the namespace http://tempuri.org/Test.xsd"
0
 
Geert BormansCommented:
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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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