making reference to other elements...

Discussion in 'XML' started by Pablo Gomes Ludermir, Nov 27, 2004.

  1. Hello,

    I have the following case that I am trying to put in XML Schema.
    I have the classes HelpItem, Document and Message that work as follows:

    One HelpItem contains several Document and Message instances.
    Thus, in XML Document and Message are child elements of HelpItem.

    However, a Message may have a reference to one or several existing
    Docuemnt instances, and also may have a reference to one or several
    Message instances (its replies) and another Message that it is the
    parent Message (the Message that I am replying to).

    How can I make the references to the documents and other messages (I
    hope that the reference to the messages is correct in the example bellow)?

    The following information is to keep it more clear:

    class Message
    - referencedDocuments List
    - conversation List //messages that reply the current one (optional)
    - parentMessage Message //the message that I am replying to
    end class

    <xs:element name="Document" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
    <xs:attribute name="id" type="xs:ID" use="required"/>
    ... other attributes here
    </xs:complexType>
    </xs:element>


    <xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
    <xs:attribute name="id" type="xs:ID" use="required"/>
    <xs:attribute name="parentMessage" type="xs:IDREF" use="optional"/>
    <xs:attribute name="conversation" type="xs:IDREFS" use="optional"/>
    ... other attributes here
    </xs:complexType>
    </xs:element>
    Pablo Gomes Ludermir, Nov 27, 2004
    #1
    1. Advertising

  2. Pablo Gomes Ludermir wrote:


    > I have the following case that I am trying to put in XML Schema.
    > I have the classes HelpItem, Document and Message that work as follows:
    >
    > One HelpItem contains several Document and Message instances.
    > Thus, in XML Document and Message are child elements of HelpItem.
    >
    > However, a Message may have a reference to one or several existing
    > Docuemnt instances, and also may have a reference to one or several
    > Message instances (its replies) and another Message that it is the
    > parent Message (the Message that I am replying to).
    >
    > How can I make the references to the documents and other messages (I
    > hope that the reference to the messages is correct in the example bellow)?
    >
    > The following information is to keep it more clear:
    >
    > class Message
    > - referencedDocuments List
    > - conversation List //messages that reply the current one (optional)
    > - parentMessage Message //the message that I am replying to
    > end class
    >
    > <xs:element name="Document" minOccurs="0" maxOccurs="unbounded">
    > <xs:complexType>
    > <xs:attribute name="id" type="xs:ID" use="required"/>
    > ... other attributes here
    > </xs:complexType>
    > </xs:element>
    >
    >
    > <xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
    > <xs:complexType>
    > <xs:attribute name="id" type="xs:ID" use="required"/>
    > <xs:attribute name="parentMessage" type="xs:IDREF" use="optional"/>
    > <xs:attribute name="conversation" type="xs:IDREFS" use="optional"/>
    > ... other attributes here
    > </xs:complexType>
    > </xs:element>


    On a first look your use of xs:ID and xs:IDREF and xs:IDREFS seems fine
    to me. Or are you getting any error messages from a schema processor?

    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
    Martin Honnen, Nov 27, 2004
    #2
    1. Advertising

  3. Well, XMLSpy did not make any complaints. But the point was that I don't
    know how to figure out the reference from the message to the document
    element.
    And another thing is that the ID is not on the local scope of the
    element, but of the whole document. Is there a way to keep the ID unique
    on the scope of the element?

    Regards,
    Pablo

    Martin Honnen wrote:
    >
    >
    > Pablo Gomes Ludermir wrote:
    >
    >
    >> I have the following case that I am trying to put in XML Schema.
    >> I have the classes HelpItem, Document and Message that work as follows:
    >>
    >> One HelpItem contains several Document and Message instances.
    >> Thus, in XML Document and Message are child elements of HelpItem.
    >>
    >> However, a Message may have a reference to one or several existing
    >> Docuemnt instances, and also may have a reference to one or several
    >> Message instances (its replies) and another Message that it is the
    >> parent Message (the Message that I am replying to).
    >>
    >> How can I make the references to the documents and other messages (I
    >> hope that the reference to the messages is correct in the example
    >> bellow)?
    >>
    >> The following information is to keep it more clear:
    >>
    >> class Message
    >> - referencedDocuments List
    >> - conversation List //messages that reply the current one (optional)
    >> - parentMessage Message //the message that I am replying to
    >> end class
    >>
    >> <xs:element name="Document" minOccurs="0" maxOccurs="unbounded">
    >> <xs:complexType>
    >> <xs:attribute name="id" type="xs:ID" use="required"/>
    >> ... other attributes here
    >> </xs:complexType>
    >> </xs:element>
    >>
    >>
    >> <xs:element name="Message" minOccurs="0" maxOccurs="unbounded">
    >> <xs:complexType>
    >> <xs:attribute name="id" type="xs:ID" use="required"/>
    >> <xs:attribute name="parentMessage" type="xs:IDREF"
    >> use="optional"/>
    >> <xs:attribute name="conversation" type="xs:IDREFS"
    >> use="optional"/>
    >> ... other attributes here
    >> </xs:complexType>
    >> </xs:element>

    >
    >
    > On a first look your use of xs:ID and xs:IDREF and xs:IDREFS seems fine
    > to me. Or are you getting any error messages from a schema processor?
    >
    Pablo Gomes Ludermir, Nov 27, 2004
    #3
  4. Pablo Gomes Ludermir wrote:


    > And another thing is that the ID is not on the local scope of the
    > element, but of the whole document. Is there a way to keep the ID unique
    > on the scope of the element?


    xs:ID needs to be unique inside of the complete document but you can use
    xs:key to define keys in the scope of an element, see the example in
    http://www.w3.org/TR/xmlschema-0/#specifyingKeysAndtheirRefs

    --

    Martin Honnen
    http://JavaScript.FAQTs.com/
    Martin Honnen, Nov 27, 2004
    #4
    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.
Similar Threads
  1. Replies:
    5
    Views:
    1,873
    Andrew Thompson
    Jan 12, 2005
  2. Deryck
    Replies:
    3
    Views:
    628
    SpaceGirl
    Oct 8, 2004
  3. ANoobee
    Replies:
    3
    Views:
    389
  4. Ultrus
    Replies:
    4
    Views:
    2,594
    Stefan Behnel
    Aug 30, 2007
  5. Dan Kohn
    Replies:
    6
    Views:
    307
    Robert Klemme
    Dec 28, 2013
Loading...

Share This Page