Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 23 XML
  gp 23.1 XML_Util
  gp 23.2 XML_Beautifier
  gp 23.3 XML_RSS
  gp 23.4 XML_Tree
  gp 23.5 XML_DTD
  gp 23.6 XML_Parser
  gp 23.7 XML_Wddx
  gp 23.8 XML_Serializer
  gp 23.9 XML_Indexing


Rheinwerk Computing

23.5 XML_DTD  toptop


Besprochene Version: 0.4.2 Lizenz: PHP-Lizenz
Klassendatei(en): XML/DTD.php; XML/DTD/XmlValidator.php

Das Paket XML_DTD dient primär dazu, ein XML-Dokument gegen eine DTD zu validieren. Hierzu liest das Paket die DTD ein, analysiert sie und kann dann ein XML-Dokument auf Basis der ermittelten Daten auf Gültigkeit prüfen.

Schade an diesem Paket ist, dass Fehler in der DTD leider nicht erkannt werden. Des Weiteren wird der Umgang mit Whitespaces vom Paket zurzeit noch recht streng gehandhabt.

Wenn Sie ein XML-Dokument wie

<ort> 
   <name>Bielefeld</name> 
</ort>

nutzen und die dazugehörige DTD lautet

<!ELEMENT ort (name)> 
<!ELEMENT name (#PCDATA)>

würde man auf den ersten Blick davon ausgehen, dass die XML-Datei valide ist. Das sieht XML_DTD allerdings anders. Und zwar würde in diesem Fall beanstandet, dass nach <ort> kein #PCDATA folgen darf. Und da die Whitespaces, die aus dem Zeilenumbruch und der Einrückung resultieren, als #PCDATA interpretiert werden, ergibt sich dieser Fehler.

Das heißt, entweder darf das XML-Dokument keine Whitespaces an unzulässigen Stellen enthalten und muss somit so dargestellt werden:

<ort><name>Bielefeld</name></ort>

Oder Sie schreiben die DTD so um, dass Whitespaces enthalten sein dürfen:

<!ELEMENT ort (#PCDATA,name,#PCDATA)> 
<!ELEMENT name (#PCDATA)>

Die zweite Variante lässt die Nutzung von DTDs allerdings fragwürdig erscheinen, so dass ich Ihnen die erste Variante empfehlen würde.

Die eigentliche Nutzung der Kernfunktionalität des Pakets ist sehr einfach. Nachdem Sie ein Objekt der Klasse XML_DTD_XmlValidator abgeleitet haben, können Sie der Methode isValid() den Namen der DTD-Datei sowie den Namen der XML-Datei als Parameter übergeben. isValid() liefert true oder false zurück, um Ihnen mitzuteilen, ob die XML-Datei korrekt validiert werden konnte. Wenn der Rückgabewert false war, können Sie mit der Methode getMessage() die dazugehörige Fehlermeldung auslesen.

require_once('XML/DTD/XmlValidator.php'); 
$parser = new XML_DTD_XmlValidator; 
 
$dtd='ma.dtd'; 
$xml='ma.xml'; 
 
$erg=$parser->isValid($dtd,$xml); 
if (true===PEAR::isError($erg)) 
{ 
   die ($erg->getMessage()); 
} 
if (true===$erg) 
{ 
   echo 'Die XML-Datei konnte erfolgreich validiert werden'; 
} 
else 
{ 
  echo 'Bei der Validierung ist ein Fehler aufgetreten<br />'; 
  echo htmlentities($parser->getMessage()); 
}

Listing 23.8 Validieren einer XML-Datei

Da sowohl die XML-Daten als auch die DTD aus einer Datei stammen und im Hintergrund noch einige weitere Pakete genutzt werden, würde ich Ihnen empfehlen zu prüfen, ob ein PEAR_Error-Objekt zurückgegeben wurde.

Hat die Methode ermittelt, dass ein Fehler vorliegt, wird die zurückgelieferte Meldung mit getMessage() ausgelesen und ausgegeben. Soll diese Meldung im Browser ausgegeben werden, ist es wichtig, dass die Meldung mit htmlentities() oder htmlspecialchars() bearbeitet wird, da die dort enthaltenen Tags sonst nicht dargestellt werden.

Die Datei XML/DTD.php sieht noch eine Möglichkeit vor, eine DTD zu analysieren und die daraus resultierenden Vorschriften als Array ausgeben zu lassen. Da die DTD zurzeit aber nicht auf Gültigkeit geprüft wird, scheint das nur bedingt sinnvoll.

 <<   zurück
     
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: PHP PEAR
PHP PEAR
Jetzt Buch bestellen!
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Rheinwerk-Shop: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Rheinwerk-Shop: MySQL 5.6






 MySQL 5.6


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern