Announcement

Collapse
No announcement yet.

Attribut für alle Elemente definieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Attribut für alle Elemente definieren

    Hallo Community,

    ich versuche mich gerade ein bisschen mit DTD´s anzufreunden.
    Ich weiss mittlerweile wie man einem Element Attribute hinzufügt , und diese erzwingt oder auch nicht.

    z.B.:
    Code:
    <!ELEMENT ALBUM    (#PCDATA)>
      <!ATTLIST ALBUM source CDATA #IMPLIED>
    oder halt #REQUIRED wenn es sein muss.

    Aber wie definiere ich attribute für alle elemente?
    konkret möchte ich eigt. sowas:
    Code:
    <!ELEMENT ALL (#CDDATA)>
      <!ATTLIST ALL unique ID #IMPLIED>
    Ich bin für alle erklärungen dankbar.

    Quelle:
    http://www.jcpohl.de/technik/tut3dtd.html

  • #2
    Attribute lassen sich nur konkret deklarierten Elementen zuweisen. Man kann sich die Schreibarbeit bei mehrfachen identischen Zuweisungen durch die Verwendung von Parameterentities zumindest vereinfachen (im folgenden Beispiel für die Elemente child1 bzw. child2 gezeigt):

    test.xml:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE root SYSTEM "test.dtd">
    <root>
      <child1 name="abc">Inhalt</child1>
      <child2 name="xyz">Inhalt</child2>
    </root>
    test.dtd:
    Code:
    <!ELEMENT root (child1,child2)>
    <!ELEMENT child1 (#PCDATA)>
    <!ELEMENT child2 (#PCDATA)>
    <!ENTITY % attr "name CDATA #IMPLIED">
    <!ATTLIST child1 %attr;>
    <!ATTLIST child2 %attr;>

    Comment


    • #3
      Hallo Thomas, danke für deine Antwort und Hilfe, du hast mir sehr geholfen.

      Ich hoffe es ist regelkonform wenn ich anschließend eine neue Frage stelle ohne ein neuen Thread zu öffnen.

      wie kann ich in der DTD festlegen das ein Element sowohl Element X als auch CDATA enthalten kann? Mit folgenden konstrukt hatte ich keinen erfolg:
      Code:
      <!ELEMENT node ((x)*| (CDATA))>
      und bekomme mein validieren immer die fehlermeldung
      Code:
      Element node content does not follow the DTD, expecting ((x)*| (CDATA)), got (CDATA)

      Comment


      • #4
        Gemischter Inhalt wird so deklariert:
        Code:
        <!ELEMENT node (#PCDATA | x)*>

        Comment


        • #5
          Hallo Thomas,

          danke für deine Hilfe.

          Comment

          Working...
          X