Here under 4 schemas i'm working with ( it may be long: sorry...)
The context is the following :
Resident.xsd imports Person.xsd and includes Common.xsd ( anonimous schema:
no TargetNamespace )
Person.xsd includes Common-Naming.xsd ( anonimous schemas )
Common-Naming.xsd includes common.xsd ( both are anonimous schemas )
Compilation of Resident.xsd raise the following exception:
"System.Xml.Schema.XmlSchemaException: The attribute 'oid' already
exists...."
That is wrong : the schemas are valid and well done ( Xml-Spy ).
The problem seems to be that Common.xsd appears twice: one time in
Resident.xsd and an other time in Person.xsd. i tried to put Common.xsd &
Common-Naming.xsd in a same file it doesn't change anything.
Thank for any help because i'm currently freezed in my dev....
<!-- COMMON.XSD -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified"
id="CommonSpace">
<xs:group name="IEntity">
<xs:sequence>
<xs:element name="Reference" type="xs:string"/>
</xs:sequence>
</xs:group>
<xs:complexType name="BusinessEntityType">
<xs:sequence>
<xs:group ref="IEntity"/>
</xs:sequence>
<xs:attributeGroup ref="ISqlEntity"/>
</xs:complexType>
<xs:complexType name="EntityRefType">
<xs:sequence>
<xs:element name="Reference" type="xs:string"/>
<xs:element name="Description" type="xs:string"/>
</xs:sequence>
<xs:attributeGroup ref="ISqlEntity"/>
</xs:complexType>
<xs:complexType name="RefType">
<xs:complexContent>
<xs:extension base="EntityRefType">
<xs:attribute name="type" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:attributeGroup name="ISqlEntity">
<xs:attribute name="oid" type="xs:string"/>
</xs:attributeGroup>
</xs:schema>
<!-- COMMON-NAMING.XSD -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified"
id="CommonNamingSpace">
<xs:include schemaLocation="Common.xsd" />
<xs:simpleType name="SexeTypology">
<xs:restriction base="xs:string">
<xs:enumeration value="M" />
<xs:enumeration value="F" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CivilityTypology">
<xs:restriction base="xs:string">
<xs:enumeration value="c1:MRS" />
<xs:enumeration value="c2:MISS" />
<xs:enumeration value="c3:MR" />
<xs:enumeration value="c4:DOC" />
<xs:enumeration value="c5:PROF" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="CivilityType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="CivilityTypology"
default="c3:MR" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="NameType">
<xs:sequence>
<xs:element name="Civility" type="CivilityType" />
<xs:element name="First" type="xs:string" />
<xs:element name="Last" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
<!-- PERSON.XSD -->
<xs:schema xmlns="http://copro/Copro.Persons"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://copro/Copro.Persons" elementFormDefault="qualified"
attributeFormDefault="unqualified" id="PersonSpace">
<xs:include schemaLocation="Common-Naming.xsd" />
<xs:simpleType name="FamillyStatus">
<xs:restriction base="xs:string">
<xs:enumeration value="SINGLE" />
<xs:enumeration value="MARIED" />
<xs:enumeration value="WEADOW" />
<xs:enumeration value="UNDEFINED" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="CommonSharedActivity">
<xs:restriction base="xs:string">
<xs:enumeration value="Jardinage" />
<xs:enumeration value="Musique" />
<xs:enumeration value="Informatique" />
<xs:enumeration value="Baby-Sisting" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="PersonType">
<xs:complexContent>
<xs:extension base="BusinessEntityType">
<xs:sequence>
<xs:element name="Name" type="NameType" />
<xs:element name="ArrivalDate" type="xs:date"
minOccurs="0" />
<xs:element name="IsCoproManager" type="xs:boolean"
default="false" minOccurs="0" />
<xs:element name="FamillyStatus" type="FamillyStatus"
default="UNDEFINED" minOccurs="0" />
<xs:element name="BirthDay" type="xs:dateTime"
minOccurs="0" />
<xs:element name="Email" type="xs:string" minOccurs="0" />
<xs:element name="SharedActivity" type="xs:string"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="PersonRefType">
<xs:complexContent>
<xs:extension base="EntityRefType">
<xs:sequence>
<xs:element ref="Person" minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Person" type="PersonType">
<xs:unique name="PersonByReference">
<xs:selector xpath="." />
<xs:field xpath="Reference" />
</xs:unique>
</xs:element>
</xs:schema>
<!-- RESIDENT.XSD -->
<xs:schema xmlns="http://copro/Copro.Residents"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:p="http://copro/Copro.Persons"
targetNamespace="http://copro/Copro.Residents" elementFormDefault="qualified"
attributeFormDefault="unqualified" id="ResidentSpace">
<xs:include schemaLocation="Common.xsd"/>
<xs:import namespace="http://copro/Copro.Persons"
schemaLocation="Person.xsd"/>
<xs:complexType name="ResidentType">
<xs:complexContent>
<xs:extension base="BusinessEntityType">
<xs:sequence>
<xs:element name="Copro-Item" type="RefType" maxOccurs="unbounded"/>
<xs:element name="Person" type="p:PersonRefType" maxOccurs="unbounded"/>
<!--
<xs:element ref="p:Person" maxOccurs="unbounded"/>
-->
</xs:sequence>
<xs:attribute name="copro" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="Resident" type="ResidentType"/>
</xs:schema>