Re: Using multiple namespaces in a in an XML instance

Jeni has answered your question.  You might also want to look through the 
schema primer at http://www.w3.org/TR/xmlschema-0/.  Thanks, and good 
luck.

------------------------------------------------------------------------
Noah Mendelsohn                                    Voice: 1-617-693-4036
Lotus Development Corp.                            Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------------







"Lukas Tan" <lukas.tan@cmis.csiro.au>
Sent by: xmlschema-dev-request@w3.org
12/13/01 12:02 AM
Please respond to "Lukas Tan"

 
        To:     <xmlschema-dev@w3.org>
        cc:     (bcc: Noah Mendelsohn/CAM/Lotus)
        Subject:        Using multiple namespaces in a in an XML instance


I suspect this is a fairly easy problem to solve, but am having no luck
finding the solution, so:

I want to have XML instances that contain elements (and possibly 
attributes)
from different namespaces, vis:

---8<---------------------------------------------[stuff.xml]
<?xml version="1.0" encoding="UTF-8"?>

<stuff xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="stuff.xsd"
       xmlns:fruit="http://www.stuff.com/fruit"
       xmlns:vegies="http://www.stuff.com/vegies"
       xmlns:cereals="http://www.stuff.com/cereals">

 <count>6</count>
 <fruit:apple>Granny Smith</fruit:apple>
 <fruit:orange>Valencia</fruit:orange>
 <vegies:carrot>Frozen</vegies:carrot>
 <vegies:beans>Also frozen</vegies:beans>
 <cereals:rice>2kg</cereals:rice>
 <cereals:bread>Toast</cereals:bread>

</stuff>
---8<---------------------------------------------[stuff.xml]

The schema this points to is stuff.xsd, below. This is where I suspect the
problems are, as you cannot simply say <element name="fruit:apple"
type="fruit:apple-type"> type things. Also, I think this is where the
references to the other schemas (below) should be, but can't figure out 
how
to include them here. I have no intention of using the namespaces, they're
just there to keep the validator happy(er).

---8<---------------------------------------------[stuff.xsd]
<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:fruit="http://www.stuff.com/fruit"
            xmlns:vegies="http://www.stuff.com/vegies"
            xmlns:cereals="http://www.stuff.com/cereals">

 <xsd:element name="stuff" type="stuff-type"/>

 <xsd:complexType name="stuff-type">
  <xsd:all>
   <xsd:element name="count" type="xsd:nonNegativeInteger"/>
   <xsd:element name="fruit:apple" type="fruit:apple-type"/>
   <xsd:element name="fruit:orange" type="fruit:orange-type"/>
   <xsd:element name="vegies:carrot" type="vegies:carrot-type"/>
   <xsd:element name="vegies:beans" type="vegies:beans-type"/>
   <xsd:element name="cereals:rice" type="cereals:rice-type"/>
   <xsd:element name="cereals:bread" type="cereals:bread-type"/>
  </xsd:all>
 </xsd:complexType>

</xsd:schema>
---8<---------------------------------------------[stuff.xsd]

Following are the three "trivial" schemas for the "sub-namespaces":

---8<---------------------------------------------[fruit.xsd]
<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:fruit="http://www.stuff.com/fruit"
            targetNamespace="http://www.stuff.com/fruit"
            elementFormDefault="unqualified"
            attributeFormDefault="unqualified">

 <xsd:element name="apple" type="xsd:string"/>
 <xsd:element name="orange" type="xsd:string"/>

</xsd:schema>
---8<---------------------------------------------[fruit.xsd]

---8<---------------------------------------------[vegies.xsd]
<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:vegies="http://www.stuff.com/vegies"
            targetNamespace="http://www.stuff.com/vegies"
            elementFormDefault="unqualified"
            attributeFormDefault="unqualified">

 <xsd:element name="carrot" type="xsd:string"/>
 <xsd:element name="beans" type="xsd:string"/>

</xsd:schema>
---8<---------------------------------------------[vegies.xsd]

---8<---------------------------------------------[cereals.xsd]
<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:cereals="http://www.stuff.com/cereals"
            targetNamespace="http://www.stuff.com/cereals"
            elementFormDefault="unqualified"
            attributeFormDefault="unqualified">

 <xsd:element name="rice" type="xsd:string"/>
 <xsd:element name="bread" type="xsd:string"/>

</xsd:schema>
---8<---------------------------------------------[cereals.xsd]

As illuded to before, the problem centers around getting the XML instance
and/or the stuff schema to recognise the three sub-namespaces and their
schemas. The validator I'm using is Apache's Xerces (command line "java
dom.Counter  -n -v -s"), and the ultimate goal is for it to successfully
validate the above with all files in the one directory on a local disk.

All help appreciated.

Thanks

Lukas

Received on Wednesday, 19 December 2001 17:18:32 UTC