xml schema: differentiate nodes with same name

Discussion in 'XML' started by Hans-Joerg Unger, Apr 10, 2007.

  1. Hi !

    How can I differentiate nodes in an xml-schema which have the same
    name (see "file"-element in the example) , but different locations and
    meanings in the xml tree:

    How can i differentiate the parsing of the file-element depended to
    it's parent-node ?

    A example xml-fragment:
    ---
    <test>
    <hello id="FOO">
    <file name="hello.txt" /> <===== file element
    </hello>
    <goodbye id="FOOBAR">
    <file id="123123"> <===== file element
    <regex name="go.txt"
    match='^(.*)AAA(.*)$' value="\\1BAZ" flags="m" />
    <regex name="go.txt"
    match='^(.*)AAA(.*)$' value="\\1BAZAZ" flags="m" />
    </file>
    </goodbye>
    ---

    A example xml-schema fragment:
    ---
    <xsd:element name="test">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element ref="hello" minOccurs="1" maxOccurs="unbounded"/>
    <xsd:element ref="goodby" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>

    <!-- This element points to a file-subelement -->
    <xsd:element name="hello">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element ref="file" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>

    <!-- This element belongs to the previous element -->
    <xsd:element name="file">
    ....
    </xsd:element>

    <!-- This element points to a completly different file-subelement -->
    <xsd:element name="goodbye">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element ref="file" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>

    <!-- This element belongs to the previous element -->
    <xsd:element name="file"">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element ref="regex" minOccurs="1" maxOccurs="unbounded"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    ---
     
    Hans-Joerg Unger, Apr 10, 2007
    #1
    1. Advertising

  2. Hans-Joerg Unger

    szomiz Guest

    U¿ytkownik "Hans-Joerg Unger" <> napisa³ w wiadomo¶ci
    news:...
    > Hi !
    >
    > How can I differentiate nodes in an xml-schema which have the same
    > name (see "file"-element in the example) , but different locations and
    > meanings in the xml tree:


    yes

    <xsd:element name="test" type="testDef"/>

    <xsd:complexType name="testDef">
    > <xsd:sequence>

    <xsd:element name="hello" type="helloDef" minOccurs="1"
    maxOccurs="unbounded"/>
    <xsd:element name="goodby" type="goodbyDef" minOccurs="1"
    maxOccurs="unbounded"/>
    > </xsd:sequence>
    > </xsd:complexType>

    <!--/xsd:element-->
    >
    > <!-- This element points to a file-subelement -->

    <!--xsd:element name="hello"-->
    <xsd:complexType name="helloDef">
    > <xsd:sequence>

    <xsd:element name="file" type="fileDef1" minOccurs="1"
    maxOccurs="unbounded"/>
    > </xsd:sequence>
    > </xsd:complexType>

    <!--/xsd:element-->
    >
    > <!-- This element belongs to the previous element -->

    <xsd:complexType name="fileDef1">
    ....
    </xsd:complexType>
    >
    > <!-- This element points to a completly different file-subelement -->

    <!--xsd:element name="goodbye"-->
    <xsd:complexType name="goodbyeDef">
    > <xsd:sequence>

    <xsd:element name="file" type="fileDef2" minOccurs="1"
    maxOccurs="unbounded"/>
    > </xsd:sequence>
    > </xsd:complexType>

    <!--/xsd:element-->
    >
    > <!-- This element belongs to the previous element -->

    <!--xsd:element name="file""-->
    <xsd:complexType name="fileDef2">
    > <xsd:sequence>
    > <xsd:element ref="regex" minOccurs="1" maxOccurs="unbounded"/>
    > </xsd:sequence>
    > </xsd:complexType>

    <!--/xsd:element-->

    sz.
     
    szomiz, Apr 10, 2007
    #2
    1. Advertising

  3. Hans-Joerg Unger wrote:

    > How can I differentiate nodes in an xml-schema which have the same
    > name (see "file"-element in the example) , but different locations and
    > meanings in the xml tree:
    >
    > How can i differentiate the parsing of the file-element depended to
    > it's parent-node ?


    One way is to simply inline the element definitions e.g.


    <xsd:element name="test">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="hello" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="file" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:attribute name="name" type="xsd:string"/>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="goodby" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="file" minOccurs="1" maxOccurs="unbounded">
    <xsd:complexType>
    ...
    </xsd:complexType>
    </xsd:sequence>
    </xsd:complexType>
    <xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
     
    Martin Honnen, Apr 10, 2007
    #3
    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