peter M: problem mit dtd

Ich muss in einer dtd Datei eine Defintion mehrere Male in verschiedenen Verschachtelungsebenen anfuehren.
Zb wie im folgenden die Name Definition:

<!ELEMENT Brief (Type,Name)>
          <!ELEMENT Type (#PCDATA)>
          <!ELEMENT Name (#PCDATA)>

<!ELEMENT Test (Name, Run, Parameter)>
        <!ELEMENT Name (#PCDATA)>
        <!ELEMENT Start (#PCDATA)>
        <!ELEMENT Settings (time)>

Wenn ich dann das dazugehoerige xml Dokument validiere, wird gemeckert:

"The 'Name' element has already been declared."

Was kann ich dagegen tun?
Evlt Entities? Wenn ja, wie muesste ich die einsetzen?

Besten Dank

  1. Hello,

    <!ELEMENT Brief (Type,Name)>
              <!ELEMENT Name (#PCDATA)>

    <!ELEMENT Test (Name, Run, Parameter)>
            <!ELEMENT Name (#PCDATA)>

    Na ja, bis zu diesem Zeitpunkt - und in einer DTD dürfte das in Anbetracht der minimalen Auswahl an Datentypen ja häufiger der Fall sein - sind Name #1 und Name #2 vollkommen identisch. Die von dir geschriebene "Verschachtelung" existiert faktisch nicht.

    Nachfolgendes ist äquivalent zur obigen Schreibweise:
    <!ELEMENT Brief (Type,Name)>
    <!ELEMENT Test (Name, Run, Parameter)>
    <!ELEMENT Name (#PCDATA)>

    Sollte es hingegen einmal vorkommen, dass du Name einmal als #PCDATA und einmal als komplexes Element benötigst, dann stößt deine DTD an ihre Grenzen und man muss sich nach anderen Lösungen umschauen, z.B. den feineren aber komplexeren XML-Schemata, mit der Möglichkeit anonymer Typen.

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve