Andreas Korthaus: XML-Validator in PHP

Beitrag lesen

Hallo!

Komischerweise bieten die XML-Funktionen von PHP keine Möglichkeit ein XML-Dokument zu validieren und auch in PEAR habe ich da nichts gefunden, und auch Google war da wenig auskunftsfreudig.

Kennt da jemand irgendwas? Oder - wie kompliziert ist es sowas selbst zu schreiben? Eigentlich müßte man doch "nur" die DTD und die XML-Datei parsen, die DTD "verstehen" und der DTD entsprechend das XML-Dokument überprüfen. Aber wenn das so einfach wäre gäbs da vermutlich schon eine Funktion für. Was braucht man denn alles?
ich würde jetzt mal die XML-Datei in einen mehrdimensionalen Array schreiben, also aus

<artikel>
    <name>Rasenmäher</name>
    <preis>12,32</preis>
</artikel>

Die DTD dazu sähe z.B. so aus:

<!ELEMENT artikel (name,preis)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT preis (#PCDATA)>

Würde ich jetzt mal

array( "artikel" =>
       array( "name" => "#PCDATA",
              "preis" => "#PCDATA"
            )
     )

machen.

Das könnte ich jetzt wieder parsen in einen Array

array("artikel" =>
      array( "name",
             "preis"
           ),
      "name" => "#PCDATA",
      "preis" => "#PCDATA"
      )

Und jetzt gehe ich in einer Schleife das erste Element XML-Daten arrays durch und prüfe da wieder in einer Schleife ob alle Elemente von "artikel" auch in dem DTD array in "artikel" vorkommen(in_array($dtd_data["artikel"])).

Das mache ich dann wieder in einer Schleife mit jedem einzelnen Element.
Was gäbs dann noch zu beachten? ANY, +, *, ?, sonst noch was? Naja, Attribute fehlen noch udn die ein oder andere "Kleinigkeit", haltet Ihr das für schwierig sowas selbst zu schreiben? Oder gibt es da was fertiges was ich verwenden könnte(wäre mir am liebsten, denn auf den 2. Blick würde das wohl doch etwas komplexer als auf den 1. ;-))?

Viele Grüße
Andreas

PS: In PERL gibts da vermutlich wieder ein Modul für, oder?