Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries >Thread Prev - Re: Schema Design for common global element [Thread Next] Re: Schema Design for common global elementTo: NULL Date: 8/14/2004 12:39:00 PM Thank you everyone for your help. Here is what I needed to do (a lot
simpler than I thought)... just add "targetNamespace" to the
definition for each XML schema document with a unique value.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://Untitled8/in"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="base">
<xs:complexType>
<xs:attribute name="myNodeABC" type="xs:string"/>
<xs:attribute name="myNodeXYZ" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://Untitled9/in"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="base">
<xs:complexType>
<xs:attribute name="myNodeABC" type="xs:string"/>
<xs:attribute name="myNodeXYZ" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:schema>
Thanks again.
Regards,
Gordon Dickens
------------------------------------------------------------------------
i.daneker@u... (Ingrid) wrote in message news:<f0e34f1.0408071006.120774bf@p...>...
> *************************************************************
> i.daneker@u... (Ingrid) wrote in message news:<f0e34f1.0408070345.653f3eef@p...>...
> > Re my answer below...
> >
> > Even better than that: SCHEMA 1 (Untitled8.xsd):
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > xmlns:in="http://www.w3.org/2001/XMLSchema"
> > elementFormDefault="qualified" targetNamespace="http://Untitled8">
> > <-- <xs:import namespace="http://Untitled9/in"
> > schemaLocation="untitled9.xsd"></xs:import>-->
> > <xs:element name="base">
> > <xs:complexType>
> > <xs:sequence>
> > <in:element name="base">
> > <in:complexType>
> > <in:attribute name="myNodeABC" type="in:string"/>
> > <in:attribute name="myNodeXYZ" type="in:string"/>
> > </in:complexType></in:element>
> > </xs:sequence>
> > <xs:attribute name="myNodeABC"></xs:attribute>
> > <xs:attribute name="myNodeDEF"></xs:attribute>
> > </xs:complexType>
> > </xs:element>
> > </xs:schema>
> >
> >
> > SCHEMA 2 (Untitled9.xsd):
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <in:schema xmlns:in="http://www.w3.org/2001/XMLSchema"
> > targetNamespace="http://Untitled9/in"
> > elementFormDefault="qualified">
> > <in:element name="base">
> > <in:complexType>
> > <in:attribute name="myNodeABC" type="in:string"/>
> > <in:attribute name="myNodeXYZ" type="in:string"/>
> > </in:complexType>
> > </in:element>
> > </in:schema>
> >
> > Resulting XML doc:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <base xmlns="http://Untitled8"
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > xsi:schemaLocation="http://Untitled8
> > file:/C:/Documents%20and%20Settings/Ingrid/Desktop/Untitled8.xsd"
> > myNodeABC="" myNodeDEF="">
> > <base myNodeABC="" myNodeXYZ="">SCHEMA 2 content </base>
> > </base>
> >
> > Ingrid
> >
> > So the solution below is probably not strictly speaking the correct
> > way...
> >
> >
> > i.daneker@u... (Ingrid) wrote in message news:<f0e34f1.0408050656.3a688f28@p...>...
> > > Hi Gordon
> > >
> > > Had a similar problem and it took me ages to sort something out (just
> > > writing a dissertation about DTD vs Schema use..)
> > >
> > > This is what worked for me, but I am not an expert so my solution
> > > might not be how it should be done...
> > >
> > > Sample Schema 1 (file: untitled8.xsd):
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > xmlns:in="http://www.w3.org/2001/XMLSchema"
> > > elementFormDefault="qualified">
> > > <xs:import namespace="http://www.w3.org/2001/XMLSchema"
> > > schemaLocation="untitled9.xsd"></xs:import>
> > > <xs:element name="base">
> > > <xs:complexType>
> > > <xs:sequence>
> > > <xs:element ref="in:base"></xs:element>
> > > </xs:sequence>
> > > <xs:attribute name="myNodeABC"></xs:attribute>
> > > <xs:attribute name="myNodeDEF"></xs:attribute>
> > > </xs:complexType>
> > > </xs:element>
> > > </xs:schema>
> > > which is your main Schema, note the <xs:import> tag, which references
> > > the location of your "to be imported" element (here in the same
> > > directory so just referenced "untitled9.xsd"). Also note above the
> > > <xs:import> - tag a new xmlns namespace abbreviation is introduced
> > > ie... xmlns:in - this is because I have given your second Schema a new
> > > namespace prefix (in)...:
> > >
> > > Sample Schema 2: This is the "to be imported" schema (my doc called
> > > untitled9.xsd - referenced in Schema 1 in the <xs:import> tag) with
> > > the new namespace prefix in:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <in:schema xmlns:in="http://www.w3.org/2001/XMLSchema"
> > > targetNamespace="http://www.w3.org/2001/XMLSchema"
> > > elementFormDefault="qualified">
> > > <in:element name="base">
> > > <in:complexType>
> > > <in:attribute name="myNodeABC" type="in:string"/>
> > > <in:attribute name="myNodeXYZ" type="in:string"/>
> > > </in:complexType>
> > > </in:element>
> > > </in:schema>
> > >
> > > The resulting XML instance document:
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <base xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > > xsi:noNamespaceSchemaLocation="file:untitled8.xsd"
> > > myNodeABC="" myNodeDEF="">
> > > <base xmlns="http://www.w3.org/2001/XMLSchema"
> > > myNodeABC="" myNodeXYZ="">Content of base element of Schema 2
> > > nested in the base element of Schema 1 </base>
> > > </base>
> > >
> > > By the way, I used the oXygen XML editor for this, for some reason
> > > Altova's XMLSpy">XMLSpy does not like my new namespace prefix... but oXygen
> > > validates it all..
> > >
> > > Again, this might be complete gibberish but I hope it helps..
> > >
> > > Cheers
> > > Ingrid
> > >
> > > PS let me know what you think of it anyway, might be helpful for my
> > > dissertation to know if I am thinking on the right lines..And if you
> > > find an easier way to do it, could you please post it??
> > >
> > > gdickens@c... (Gordon Dickens) wrote in message news:<8738a092.0408031840.8eaef70@p...>...
> > > > I have target xml to generate from schema. All of the XML instances
> > > > have the same global element i.e. <base>. I would like to combine all
> > > > of the schemas into a single schema where I could generate any of the
> > > > specific instances.
> > > >
> > > > sample schema one:
> > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > > elementFormDefault="qualified">
> > > > <xs:element name="base">
> > > > <xs:complexType>
> > > > <xs:attribute name="myNodeABC" type="xs:string"/>
> > > > <xs:attribute name="myNodeDEF" type="xs:string"/>
> > > > </xs:complexType>
> > > > </xs:element>
> > > > </xs:schema>
> > > >
> > > > sample schema two:
> > > > <?xml version="1.0" encoding="UTF-8"?>
> > > > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > > > elementFormDefault="qualified">
> > > > <xs:element name="base">
> > > > <xs:complexType>
> > > > <xs:attribute name="myNodeABC" type="xs:string"/>
> > > > <xs:attribute name="myNodeXYZ" type="xs:string"/>
> > > > </xs:complexType>
> > > > </xs:element>
> > > > </xs:schema>
> > > >
> > > > Can anyone suggest how to join these two into a single schema where
> > > > the instance document does not have namespace prefixed
> > > > elements/attributes?
> > > >
> > > > I tried attributeGroups, groups, import and include elements, without
> > > > any luck.
> > > >
> > > > Any help is appreciated.
> > > >
> > > > Thanks,
> > > > Gordon
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
