Felix Riesterer: Reihenfolge von Elementen in eigener DTD...

Liebe Forumler,

ich habe mir eine XML-Datei zum Abspeichern einiger Daten gestrickt (standalone="yes"), zu der ich jetzt eine Frage habe. Zuerst aber ganz kurz eine beispielhafte Minimalversion meines Formats:

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>  
<!DOCTYPE Obst [  
  <!ELEMENT Obst (Birne, Apfel)>  
  <!-- definiert das Grundgerüst des Dateiformates -->  
  <!ELEMENT Birne (#PCDATA)>  
  <!-- definiert das Datenformat des Elementes Birne -->  
  <!ELEMENT Apfel (#PCDATA)>  
  <!-- definiert das Datenformat des Elementes Apfel -->  
]>  
<Obst>  
  <Birne></Birne>  
  <Apfel></Apfel>  
</Obst>

Diese Beispiel-Datei sollte gegen ihre eigene DTD eigentlich valide sein. Ich konnte das vor dem Posten nicht überprüfen, da der Validator bei der Eingabe des Codes in seine Textarea anschließend meckerte, er habe keinen DOCTYPE gefunden...

Meine Frage: Ist die Reihenfolge von "Apfel" und "Birne" in der obigen Form _zwingend_, oder könnte es unter obiger DTD valide auch so lauten?

<Obst>  
  <Apfel></Apfel>  
  <Birne></Birne>  
</Obst>

Ich habe mich erst neu in das Self-Kapitel zu XML eingelesen, um meine GB-Daten in XML zu speichern (und zu verwalten), möchte aber sicher sein, dass eine Vertauschung bei validem XML-Code (nach meiner DTD) nicht zu erwarten ist.

Liebe Grüße aus Ellwangen,

Felix Riesterer.

  1. Hi,

    <!ELEMENT Obst (Birne, Apfel)>

    Meine Frage: Ist die Reihenfolge von "Apfel" und "Birne" in der obigen Form _zwingend_, oder könnte es unter obiger DTD valide auch so lauten?

    Ja.
    Siehe z.B.: http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.3.1

    A , B
        Both A and B must occur, in that order.

    Direkt darunter steht, wie Du vorgehen mußt, wenn beide Elemente existieren müssen, die Reihenfolge aber egal sein soll:

    A & B
        Both A and B must occur, in any order.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Lieber Andreas,

      Ja.
      Siehe z.B.: http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3.3.1

      A , B
          Both A and B must occur, in that order.

      Direkt darunter steht, wie Du vorgehen mußt, wenn beide Elemente existieren müssen, die Reihenfolge aber egal sein soll:

      A & B
          Both A and B must occur, in any order.

      vielen herzlichen Dank für die ultraschnelle Hilfe!

      Ich war gerade Dabei mein Script umzugestalten, um eine falsche Reihenfolge abzufangen... Aber bei validem XML ist das ja nicht nötig. Wunderbar!

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

    2. Hallo,

      Direkt darunter steht, wie Du vorgehen mußt, wenn beide Elemente existieren müssen, die Reihenfolge aber egal sein soll:

      A & B
          Both A and B must occur, in any order.

      Allerdings trifft das nur auf SGML-DTDs zu.

      MfG, Thomas

      1. Hi,

        Direkt darunter steht, wie Du vorgehen mußt, wenn beide Elemente existieren müssen, die Reihenfolge aber egal sein soll:

        A & B
            Both A and B must occur, in any order.

        Allerdings trifft das nur auf SGML-DTDs zu.

        Dann eben ((A,B)|(B,A)) ;-)

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.