Julius Becker: DTD-Datei

Hallo!

da ich eine DTD für eine Wörterbuchauszeichnungssprache entwerfen möchte, habe ich mir bei SELFHTML das Kapitel über DTD durchgelesen.

Ich hab jedoch ein Paar Probleme, mit dem "+ * ?"

Okay. Ich habe hier zwei kurze Auszüge und würde gern wissen, ob das, was ich mir dazu gedacht habe, auch richtig ist:

<!ELEMENT t (#PCDATA, (n)*, (pos | gram)?)>
in "t"
 - muss normaler Text stehen
 - können zusätzlich mehrere "n" stehen, muss jedoch nicht
 - können fakultativ ein "pos" und ein "gram" stehen

<!ELEMENT sense ((n)?,(t)+,(ex | dom | niv)*)>
in "sense"
 - kann ein "n" stehen (jedoch nicht mehrere)
 - muss mindestens ein "t" stehen
 - können fakultativ mehrere "ex", "dom" und "niv" stehen, müssen jedoch nicht

Vielen Dank im Voraus für die Antworten und noch allen frohe Weihnachten.
Julius

  1. Hi,

    <!ELEMENT t (#PCDATA, (n)*, (pos | gram)?)>
    in "t"

    • muss normaler Text stehen
    • können zusätzlich mehrere "n" stehen, muss jedoch nicht
    • können fakultativ ein "pos" und ein "gram" stehen

    | steht für oder, nicht für und.
    entweder pos oder gram

    <!ELEMENT sense ((n)?,(t)+,(ex | dom | niv)*)>
    in "sense"

    • kann ein "n" stehen (jedoch nicht mehrere)
    • muss mindestens ein "t" stehen
    • können fakultativ mehrere "ex", "dom" und "niv" stehen, müssen jedoch nicht

    immer noch oder - da es aber mehrere sind, ist hier das "und" nicht vollkommen verkehrt.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.mud-guard.de/
    1. Hi Andreas,

      also eher
      a) <!ELEMENT t (#PCDATA, (n)*, (pos,gram)?)>
      b) <!ELEMENT sense ((n)?,(t)+,(ex,dom,niv)*)>

      damit gilt:
      a) in "t" können fakultativ ein "pos" und ein "gram" stehen
      b) in "sense" können fakultativ mehrere "ex", "dom" und "niv" stehen, müssen jedoch nicht

      ?

      Übrigens danke für die schnelle Antwort.
      Grüße
      Julius

      1. Hi,

        also eher
        a) <!ELEMENT t (#PCDATA, (n)*, (pos,gram)?)>
        b) <!ELEMENT sense ((n)?,(t)+,(ex,dom,niv)*)>

        a) in "t" können fakultativ ein "pos" und ein "gram" stehen

        ja, genau in dieser Reihenfolge.

        b) in "sense" können fakultativ mehrere "ex", "dom" und "niv" stehen, müssen jedoch nicht

        es können jetzt mehrere Folgen von ex, dom, niv vorkommen.

        Also
        n t t t ex dom niv ex dom niv ex dom niv
        oder
        n t t t

        aber nicht

        n t t t ex ex dom dom niv niv

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.mud-guard.de/
        1. Auf zur dritten Runde

          Wenn ich aber n t t t ex ex dom dom niv niv haben möchte, sollte ich
          <!ELEMENT sense ((n)?,(t)+,(ex)*,(dom)*,(niv)*)> machen.

          Ich glaube, jetzt hab ich's verstanden! DANKE!

          Viele Grüße
          Julius

          1. Hallo,

            Wenn ich aber n t t t ex ex dom dom niv niv haben möchte, sollte ich
            <!ELEMENT sense ((n)?,(t)+,(ex)*,(dom)*,(niv)*)> machen.

            Ich glaube, jetzt hab ich's verstanden!

            Ja, wobei es reicht vollkommen wenn du so schreibst:
            <!ELEMENT sense (n?,t+,ex*,dom*,niv*)>

            Grüße
            Thomas

        2. Hallo,

          also eher
          a) <!ELEMENT t (#PCDATA, (n)*, (pos,gram)?)>

          a) in "t" können fakultativ ein "pos" und ein "gram" stehen

          ja, genau in dieser Reihenfolge.

          NEIN!

          Wenn für ein Element das gemischte Inhaltsmodell verwendet wird, muss im Inhaltsmodell das Schlüsselwort #PCDATA an der ersten Stelle notiert werden. Weiters kann für das gemischte Inhaltsmodell keine Abfolge [,], Auswahl [|]  oder Optionalität [?][*] der Kindelemente festlegen.  Nach dem schließenden Klammer des Inhaltsmodells muss der Operator * (Stern) notiert werden.

          Grüße
          Thomas

          1. Hi,

            NEIN!
            Wenn für ein Element das gemischte Inhaltsmodell verwendet wird, muss im Inhaltsmodell das Schlüsselwort #PCDATA an der ersten Stelle notiert werden.

            Ups, übersehen...

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.mud-guard.de/
  2. Hallo,

    Okay. Ich habe hier zwei kurze Auszüge und würde gern wissen, ob das, was ich mir dazu gedacht habe, auch richtig ist:

    <!ELEMENT t (#PCDATA, (n)*, (pos | gram)?)>
    in "t"

    • muss normaler Text stehen
    • können zusätzlich mehrere "n" stehen, muss jedoch nicht
    • können fakultativ ein "pos" und ein "gram" stehen

    Geht nicht. Siehe meine antwort unter [pref:t=67336&m=385259]

    <!ELEMENT sense ((n)?,(t)+,(ex | dom | niv)*)>
    in "sense"

    • kann ein "n" stehen (jedoch nicht mehrere)
    • muss mindestens ein "t" stehen
    • können fakultativ mehrere "ex", "dom" und "niv" stehen, müssen jedoch nicht

    <!ELEMENT sense (n?,t+,(ex | dom | niv)*)>

    Grüße
    Thomas