Re: Self reference in an element

Hi Avinash,

To do this you will need to break "Department" out into its own top-level 
element (or top-level complexType).  For example:

<xs:element name="Organization">
<xs:complexType>
<xs:sequence>
<xs:element ref="ns1:Department"  maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:element name="Department">
<xs:complexType>
<xs:sequence>
<xs:element name="Name"/>
<xs:element name="TotalEmp"/>
<xs:element ref="ns1:Department" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="num" type="xs:string"/>
</xs:complexType>
</xs:element>

HTH,

Pete Cordell
Codalogic Ltd
Interface XML to C++ the easy way using C++ XML
data binding to convert XSD schemas to C++ classes.
Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com
for more info

----- Original Message ----- 
From: "Avinash Nagabhushan" <avinash.sit@gmail.com>
To: <David.Hirtle@nrc-cnrc.gc.ca>; <xmlschema-dev@w3.org>
Sent: Tuesday, July 12, 2011 7:20 AM
Subject: Self reference in an element



Hi Sir,

       I am writing an schema for the following structure:

Organization
    dept +
        @num
        name
        total_emp
        dept +
where dept elements are nested within another dept element, but all
departments are under organization.


My Schema is:


<xs:schema xmlns:ns1="VIPRE Anti-phishing found a known bad URL in your 
email message. It was deleted or quarantined, depending on your settings, 
and replaced with this message. The anti-phishing setting is located in 
File>Settings under the Email Protection tab."
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="VIPRE Anti-phishing found a known bad URL in your email 
message. It was deleted or quarantined, depending on your settings, and 
replaced with this message. The anti-phishing setting is located in 
File>Settings under the Email Protection tab.">
<xs:element name="Organization">
<xs:complexType>
<xs:sequence>
<xs:element name="Department" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name"/>
<xs:element name="TotalEmp"/>
<xs:element ref="ns1:Department" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="num" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>


There is a validation error saying "ns1:Department" is not a QName and
cannot find declaration for the same. Is there something wrong in my
definition?


Can you please let me know whether it is a correct approach or wrong?


Thanks,

Avinash K N

Received on Tuesday, 12 July 2011 10:51:08 UTC