Hi
I'm stuck with the following schema validation problem in VS.NET 2003:
I have two types of xml document and related schema:
project and projectCollecti on.
A projectcollecti on is just a set of projects.
Therefore, I wish to include the project customType in the projectCollecti on
namespace.
I therefore have declared two xsd documents: project.xsd and
projectcollecti on.xsd
These both validate.
and two xml documents to test validation:
project.xml and projectcollecti on.xml.
project.xml validates perfectly, however all of the project tags within
projectcollecti on.xml are not validated.
Can anyone tell me where I'm going wrong?
Thanks.
Iain Mcleod
The documents are as follows:
project.xsd:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="Project" targetNamespace ="http://www.golds.co.uk/Project"
elementFormDefa ult="qualified"
xmlns="http://www.golds.co.uk/Project"
xmlns:mstns="ht tp://www.golds.co.uk/Project"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexTy pe name="projectTy pe">
<xs:sequence>
<xs:element name="projectDe scription" minOccurs="0" maxOccurs="1" />
<xs:element name="projectMe mberCollection" minOccurs="0"
maxOccurs="unbo unded">
<xs:complexType >
<xs:sequence>
<xs:element name="projectMe mber" minOccurs="0" maxOccurs="unbo unded">
<xs:complexType >
<xs:sequence />
<xs:attribute name="name" type="xs:string " />
</xs:complexType>
<xs:key name="ProjectMe mberNameKey">
<xs:selector xpath=".//mstns:projectMe mber" />
<xs:field xpath="@name" />
</xs:key>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsign edInt" />
<xs:attribute name="name" type="xs:string " />
<xs:attribute name="version" type="xs:decima l" />
</xs:complexType>
<xs:element name="project" type="projectTy pe" />
</xs:schema>
projectCollecti on.xsd:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="ProjectColl ection"
targetNamespace ="http://www.golds.co.uk/ProjectCollecti on"
elementFormDefa ult="qualified"
xmlns="http://www.golds.co.uk/ProjectCollecti on"
xmlns:mstns="ht tp://www.golds.co.uk/ProjectCollecti on"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:projectNS ="http://www.golds.co.uk/Project"
xmlns:msdata="u rn:schemas-microsoft-com:xml-msdata">
<xs:import namespace="http ://www.golds.co.uk/Project"
schemaLocation= "Project.xs d" />
<xs:element name="projectCo llection" type="projectCo llectionType">
<xs:key name="ProjectPr imaryKey" msdata:PrimaryK ey="true">
<xs:selector xpath=".//mstns:project" />
<xs:field xpath="@id" />
</xs:key>
<xs:key name="ProjectNa meVersionKey">
<xs:selector xpath=".//mstns:project" />
<xs:field xpath="@name" />
<xs:field xpath="@version " />
</xs:key>
</xs:element>
<xs:complexTy pe name="projectCo llectionType">
<xs:sequence>
<!-- Project Elements defined in Project.xsd -->
<xs:element name="project" type="projectNS :projectType" minOccurs="0"
maxOccurs="unbo unded" />
</xs:sequence>
</xs:complexType>
</xs:schema>
project.xml:
<?xml version="1.0" encoding="utf-8" ?>
<project xmlns="http://www.golds.co.uk/Project" id="1" name="PM"
version="1">
<projectDescrip tion>Project Management</projectDescript ion>
<projectMemberC ollection>
<projectMembe r name="GOLDS\PC" />
</projectMemberCo llection>
</project>
projectCollecti on.xml:
<?xml version="1.0" encoding="utf-8"?>
<projectCollect ion xmlns="http://www.golds.co.uk/ProjectCollecti on">
<project id="1" name="PM" version="1.0">
<projectDescrip tion>Project Management</projectDescript ion>
<projectMemberC ollection>
<projectMembe r name="GOLDS\PC" />
</projectMemberCo llection>
</project>
<project id="2" name="PM" version="1.1">
<projectDescrip tion>This is a description</projectDescript ion>
<projectMemberC ollection>
<projectMembe r name="GOLDS\PC" />
<projectMembe r name="GOLDS\IAM " />
</projectMemberCo llection>
</project>
</projectCollecti on>