Max Mustermann: Element, das die einen Tags enthalten muss, die anderen nicht

Hallo!

Es mag eine dumme Frage sein, aber wie kann ich in der DTD ein Elementtyp definieren, dass bestimmte Elementtypen enthalten muss, andere aber auch nur enthalten kann? Mit dem Sternchen (*) lege ich ja nur fest, dass ein Elementtyp leer bleiben kann. Beispiel - Deklination für deutsche Substantive:

  
<!ELEMENT decl (nom, acc, dat, gen)>  
<!ELEMENT nom (sg, pl)>  
<!ELEMENT acc (sg, pl)>  
<!ELEMENT dat (sg, pl)>  
<!ELEMENT gen (sg, pl)>  
<!ELEMENT sg (art, word)>  
<!ELEMENT pl (art, word)>  
<!ELEMENT art (#PCDATA)>  
<!ELEMENT word (#PCDATA)>  

Das Elementtyp "sg" (= Singular) muss kein "art" (= Artikel) enthalten, wohl aber "word" (= Wort), auch mehrere "word" sind zugelassen. Wie lässt sich dies festlegen?

Eine weitere Frage: Wie lege ich fest, dass "nom" (Nominativ), "acc" (Akkusativ), "dat" (Dativ) und "gen" (Genitiv) zwar nicht unbedingt "sg" UND "pl" enthalten müssen, aber wenigstens eines von beiden?

  1. Das Elementtyp "sg" (= Singular) muss kein "art" (= Artikel) enthalten, wohl aber "word" (= Wort), auch mehrere "word" sind zugelassen.

    Für Klugscheißer: Ja, bei einem Attribut muss jedes Wort "art" enthalten (das schöne Frankreich), aber das war auch nur ein Beispiel.

  2. Hi,

    Es mag eine dumme Frage sein, aber wie kann ich in der DTD ein Elementtyp definieren, dass bestimmte Elementtypen enthalten muss, andere aber auch nur enthalten kann? Mit dem Sternchen (*) lege ich ja nur fest, dass ein Elementtyp leer bleiben kann. Beispiel - Deklination für deutsche Substantive:

    [code lang=xml]
    <!ELEMENT decl (nom, acc, dat, gen)>

    Die Reihenfolge ist ungewöhnlich ;-)
    Du kannst Quantifier (*, +, ?) für jedes Inhalts-Element angeben:

    <!ELEMENT brotzeit (brotscheibe+, butter?, wurstscheibe*, kaese*, bier?)>

    Guck auch mal in die HTML-DTD, da findest Du einige Beispiele ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Die Reihenfolge ist ungewöhnlich ;-)

      Siehe hier: http://canoo.net/blog/2006/12/07/reihenfolge-der-kasus/

      <!ELEMENT brotzeit (brotscheibe+, butter?, wurstscheibe*, kaese*, bier?)>

      Ach so, ich wusste nicht, dass man das in die Klammer setzen kann. Danke für die Hilfe!

      1. Hi,

        Die Reihenfolge ist ungewöhnlich ;-)
        Siehe hier: http://canoo.net/blog/2006/12/07/reihenfolge-der-kasus/

        So ein neumodischer Krempel ...
        Das ist so ueberfluessig wie diese neumodischen Umlaute ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  3. @@Max Mustermann:

    nuqneH

    Das Elementtyp "sg" (= Singular) muss kein "art" (= Artikel) enthalten, wohl aber "word" (= Wort), auch mehrere "word" sind zugelassen. Wie lässt sich dies festlegen?

    Ob http://de.selfhtml.org/@title=SELFHTML die Antwort darauf hat? Mal nachsehen. Click.

    Wird wohl unter http://de.selfhtml.org/xml/index.htm@title=XML/DTDs zu finden sein. Click.

    Wird wohl unter http://de.selfhtml.org/xml/dtd/index.htm@title=DTDs zu finden sein. Click.

    Hm, http://de.selfhtml.org/xml/dtd/elemente.htm@title=Verschachtelungsregeln? Click.

    Da ha’m wa’s ja: <http://de.selfhtml.org/xml/dtd/elemente.htm#alternative_optionale@title=alternative und optionale Elementtypen>. Click.

    Eine weitere Frage: Wie lege ich fest, dass "nom" (Nominativ), "acc" (Akkusativ), "dat" (Dativ) und "gen" (Genitiv) zwar nicht unbedingt "sg" UND "pl" enthalten müssen, aber wenigstens eines von beiden?

    Die Frage sollte damit auch beantwortet sein.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)