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 element Re: Schema Design for common global elementTo: NULL Date: 8/7/2004 4:46:00 AM 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 | |||
|
