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 11:07:00 AM ************************************************************* 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 | |||
|
