Schema Design for common global element

Discussion in 'XML' started by Gordon Dickens, Aug 4, 2004.

  1. 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
    Gordon Dickens, Aug 4, 2004
    #1
    1. Advertising

  2. Gordon Dickens

    Ingrid Guest

    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 XML Spy 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??

    (Gordon Dickens) wrote in message news:<>...
    > 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
    Ingrid, Aug 5, 2004
    #2
    1. Advertising

  3. Gordon Dickens

    Ingrid Guest

    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...


    (Ingrid) wrote in message news:<>...
    > 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 XML Spy 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??
    >
    > (Gordon Dickens) wrote in message news:<>...
    > > 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
    Ingrid, Aug 7, 2004
    #3
  4. Gordon Dickens

    Ingrid Guest

    *************************************************************
    (Ingrid) wrote in message news:<>...
    > 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...
    >
    >
    > (Ingrid) wrote in message news:<>...
    > > 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 XML Spy 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??
    > >
    > > (Gordon Dickens) wrote in message news:<>...
    > > > 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
    Ingrid, Aug 7, 2004
    #4
  5. 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


    ------------------------------------------------------------------------
    (Ingrid) wrote in message news:<>...
    > *************************************************************
    > (Ingrid) wrote in message news:<>...
    > > 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...
    > >
    > >
    > > (Ingrid) wrote in message news:<>...
    > > > 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 XML Spy 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??
    > > >
    > > > (Gordon Dickens) wrote in message news:<>...
    > > > > 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
    Gordon Dickens, Aug 14, 2004
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.

Share This Page