Ashura: XML-Dokument-Validierung erzeugt Warnungen, die zweite

Hallo.

Momentan arbeite ich wieder einmal an einer Schnittstelle zu einem XML–Dokument.

Um die getElementById–Methode anwenden zu können, muss das Dokument zwangsläufig validiert werden; tue ich dies, werden mir unverständlichen Warnungen (nach wie vor mein Favorit: „^“) entgegen geworfen.

Hier erst einmal das Dokument:

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE gaestebuch SYSTEM "gaestebuch.dtd">  
<gaestebuch lastid="1">  
  <eintrag id="e1" sichtbar="ja">  
    <datum>Wed, 09 Aug 2006 00:00:00 +0100</datum>  
    <host>127.0.0.1</host>  
    <name><![CDATA[Foo]]></name>  
    <beitrag><![CDATA[Bar]]></beitrag>  
    <kommentar><![CDATA[Baz]]></kommentar>  
  </eintrag>  
</gaestebuch>

Und hier die zugehörige DTD:

<!ELEMENT gaestebuch (eintrag)+>  
<!ATTLIST gaestebuch  
  lastid    DATA    #REQUIRED  

>  
  
<!ELEMENT eintrag (datum, host, name, (kontakt)?, beitrag, (kommentar)?)>  
<!ATTLIST eintrag  
  id        ID         #REQUIRED  
 sichtbar  (ja|nein)  "ja"  

>  
  
<!ELEMENT datum (#PCDATA)>  
<!ELEMENT host (#PCDATA)>  
<!ELEMENT name (#PCDATA)>  
<!ELEMENT kontakt (email?, website?)>  
<!ELEMENT beitrag (#PCDATA)>  
<!ELEMENT kommentar (#PCDATA)>  
  
<!ELEMENT email (#PCDATA)>  
<!ELEMENT website (#PCDATA)>

Und das recht simpel gehaltene PHP–Script dazu:

<?php  
  
error_reporting(E_ALL);  
header('content-type: text/html; charset=utf-8');  
setlocale(LC_ALL, 'de_DE.UTF-8', 'ge');  
  
$obj_doc = new DOMDocument();  
$obj_doc->load('gaestebuch.xml');  
$obj_doc->validate();  
  
?>

Alles zusammen resultiert in folgendem Ergebnis:

Warning: DOMDocument::validate() [function.DOMDocument-validate]: /…/gaestebuch.dtd:3: parser error : '(' required to start ATTLIST enumeration in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: lastid DATA #REQUIRED in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: ^ in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: /…/gaestebuch.dtd:3: parser error : Content error in the external subset in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: lastid DATA #REQUIRED in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: ^ in /…/index.php on line 9
Warning: DOMDocument::validate() [function.DOMDocument-validate]: Could not load the external subset "gaestebuch.dtd" in /…/index.php on line 9

Wozu sollte ich Klammern zur Attributaufzählung brauchen, wenn ich keine Attribute aufzählen will? Ich wäre über eine Erleuchtung dankbar.

Einen schönen Mittwoch noch.

Gruß, Ashura

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
„It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
[HTML Design Constraints: Logical Markup]
  1. Hallo Gunnar™.

    Und hier die zugehörige DTD:

    <!ELEMENT gaestebuch (eintrag)+>

    <!ATTLIST gaestebuch
      lastid    DATA    #REQUIRED

      
    <pinky>Narf</pinky>  
      
    DATA als Inhaltstyp gibt es nicht, es muss CDATA heißen. Da muss wohl irgendwann bei Umstrukturierungen das „C“ verloren gegangen sein.  
      
    Danke für die Aufmerksamkeit.  
      
      
    Gruß, Ashura  
    
    -- 
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“  
    [[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
    
    1. Lieber Ashura,

      Hallo Gunnar™.

      war das nicht sonst immer Ingrid?

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Hallo Felix.

        Hallo Gunnar™.

        war das nicht sonst immer Ingrid?

        Im Usenet, ja. Aber Gunnar avancierte durch sein Ingrid–haftes Verhalten zu unsereren lokalen Ingrid. Und mittlerweile mache ich ihm sogar seinen Rang streitig.

        Einen schönen Donnerstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
        [HTML Design Constraints: Logical Markup]
        1. Hello out there!

          ber Gunnar avancierte durch sein Ingrid–haftes Verhalten zu unsereren lokalen Ingrid.

          Wohl der Albtraum jedes Künstlers: „lokale“ Berühmtheit.

          She said “Just a local hero”
          “Local hero” she said with a smile
          “Yeah a local hero he used to live here for a while”
          (Bruce Springsteen, “Local Hero”)

          See ya up the road,
          Gunnar

          --
          “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)