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

Beitrag lesen

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]