dtd question

Discussion in 'XML' started by thibault volpert, Jul 8, 2003.

  1. Hi all,


    Here is an element of my the DTD I wrote :

    <!ELEMENT uMeshPart (coordinateSystem?, nodeList?,
    edgeList?, faceList?, uElementList?,
    uElementGroup*, group*)>

    Now my question : I dont want to have any order between
    the elements of a <uMeshPart>, but as i wrote it it seems
    to have one. What can i change in the definition of the
    uMeshPart to avoid having this order between elements.

    Anyone an idea ?

    greets

    --
    Thibault Volpert
     
    thibault volpert, Jul 8, 2003
    #1
    1. Advertising

  2. thibault volpert wrote:

    > Now my question : I dont want to have any order between
    > the elements of a <uMeshPart>, but as i wrote it it seems
    > to have one. What can i change in the definition of the
    > uMeshPart to avoid having this order between elements.


    (element1, element2) is a list of elements in that order
    (element1 | element2) is a list of elements in any order

    --
    Klaus Johannes Rusch

    http://www.atmedia.net/KlausRusch/
     
    Klaus Johannes Rusch, Jul 8, 2003
    #2
    1. Advertising

  3. Klaus Johannes Rusch wrote:
    > (element1 | element2) is a list of elements in any order


    Nope, it's _one of_ element1 or element2.
    --
    Johannes Koch
    In te domine speravi; non confundar in aeternum.
    (Te Deum, 4th cent.)
     
    Johannes Koch, Jul 8, 2003
    #3
  4. Johannes Koch wrote:
    >
    > Klaus Johannes Rusch wrote:
    > > (element1 | element2) is a list of elements in any order

    >
    > Nope, it's _one of_ element1 or element2.


    Is there a syntax for a list of element in any order ?

    Thanks
    --
    Thibault Volpert
     
    thibault volpert, Jul 8, 2003
    #4
  5. thibault volpert wrote:
    > Johannes Koch wrote:
    >
    >>Klaus Johannes Rusch wrote:
    >>
    >>>(element1 | element2) is a list of elements in any order

    >>
    >>Nope, it's _one of_ element1 or element2.

    >
    >
    > Is there a syntax for a list of element in any order ?


    For exactly one element each in any order? No, AFAIK not with DTD.
    --
    Johannes Koch
    In te domine speravi; non confundar in aeternum.
    (Te Deum, 4th cent.)
     
    Johannes Koch, Jul 8, 2003
    #5
  6. thibault volpert wrote:

    > Is there a syntax for a list of element in any order ?


    If the number of elements is small, you may be able to list all valid
    options, something like this:
    ((element1,(element2,element3)|(element3,element2))|(element2,(element1,element3)|(element3,element1))|(element3,(element1,element3)|(element3,element1)))

    Not really feasible for a large number of elements, though.

    --
    Klaus Johannes Rusch

    http://www.atmedia.net/KlausRusch/
     
    Klaus Johannes Rusch, Jul 8, 2003
    #6
  7. thibault volpert <> writes:

    > Hi all,
    >
    >
    > Here is an element of my the DTD I wrote :
    >
    > <!ELEMENT uMeshPart (coordinateSystem?, nodeList?,
    > edgeList?, faceList?, uElementList?,
    > uElementGroup*, group*)>
    >
    > Now my question : I dont want to have any order between
    > the elements of a <uMeshPart>, but as i wrote it it seems
    > to have one. What can i change in the definition of the
    > uMeshPart to avoid having this order between elements.


    A. Is the order in which things appear in the input significant?
    (That is, does it have a meaning for the processor?) If so, then what
    you want is the equivalent of the SGML & operator:

    <!ELEMENT uMeshPart (coordinateSystem? & nodeList? &
    edgeList? & faceList? & uElementList? &
    uElementGroup* & group*)>

    This does insist that all the occurrences of uElementGroup appear
    together, and ditto for the group elements.

    In XML Schema you can just about do this, except that the XML Schema
    'all' connector doesn't allow maxOccurs > 1; if I needed to do this
    with XML Schema, I'd replace the uElementGroup* and group* with
    uElementGroups and groups elements, which wrap the multiply occurring
    uElementGroup and group elements. In XML Schema 1.1 some people are
    hoping to relax the requirement that maxOccurs be at most 1; that
    might help you here.

    An alternative is to allow the DTD to over-generate and write

    <!ELEMENT uMeshPart (coordinateSystem | nodeList |
    edgeList | faceList | uElementList |
    uElementGroup | group)*>

    and make the application check to make sure that only uElementGroup
    and group occur more than once. I don't advise this, as it will
    inevitably lead to dirty data.

    If you really want to allow any order, you can write it in XML DTD
    notation, as Klaus Johannes Rusch has pointed out, but the result will
    be very hard to understand; there are thirty-two different sequences
    in which the five elements which can occur at most once could occur,
    and you have to list them all.

    B. If, on the other hand, the sequence of items has no significance
    for your application, then the content model you have written is quite
    correct: it shows very clearly that the sequence in which
    coordinateSystem, nodeList, etc., occur in the document can have no
    significance for the application.

    -C. M. Sperberg-McQueen
    World Wide Web Consortium
     
    C. M. Sperberg-McQueen, Jul 8, 2003
    #7
  8. Thanks for all the answers.

    --
    Thibault Volpert
     
    thibault volpert, Jul 15, 2003
    #8
    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. Joseph Tilian
    Replies:
    0
    Views:
    355
    Joseph Tilian
    Dec 21, 2004
  2. Ronald Fischer
    Replies:
    4
    Views:
    1,762
    Ronald Fischer
    Mar 17, 2005
  3. winderjj
    Replies:
    1
    Views:
    423
    Richard Tobin
    Jul 31, 2003
  4. Martijn
    Replies:
    3
    Views:
    395
    Micah Cowan
    Sep 26, 2003
  5. test
    Replies:
    2
    Views:
    2,044
    Oliver Wong
    Jul 28, 2006
Loading...

Share This Page