Re: Self reference in an element

"Pete Cordell" <[email protected]>
Newsgroups gmane.text.xml.schema.devel
Message-ID <75B894C3CA224DA5A61C19790387774F@codalogic>
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" <[email protected]>
To: <[email protected]>; <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.