Unterschiede in XML-Verarbeitung zwischen PHP4 und PHP5

Unterschiede in XML-Verarbeitung zwischen PHP4 und PHP5

am 25.07.2006 14:30:48 von Robert Fritzsching

Hallo liebe Gemeinde,

mich beschäftigt seit kurzer Zeit ein Problem bei dem ich nicht weiterkomme.
Ich transformiere und validiere zwei XML mit Hilfe der
DOMDocument-Funktionen von PHP5, dies funktioniert auch sehr gut und so
wie gewünscht. Nun muss ich aber diese Transformationen auch auf einem
anderen Webserver durchführen, welcher nur PHP4.4.2 zur Verfügung
stellt. Dazu verwende ich nun die XSLT-Funktionen dieser Version.
Das Dokument wird auch transformiert, jedoch gibt es einige Probleme bei
denen ich im Moment nicht weiter weiß:

1.) Der Parser bringt eine Fehlermeldung sobald ich einen
Kommentarknoten verarbeiten möchte?!

2.) Wenn ich als ' doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-stric t.dtd"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"/>' wähle, werden unter
PHP4 leere Elemente ohne Leerzeichen ausgegeben (zb.
statt />). Das nützt mir aber nichts, da der IE (und ältere Browser) damit
nicht zurechtkommen. Wenn ich 'method="html"' stelle, werden wiederum
die leeren Elemente nicht geschlossen und ich erhalte kein gültiges
xhtml (zb: ' type="text/css" href="link.css">').

3.) Auch gut erkennbar am Beispiel unter 2.: Warum kopiert er mir in
PHP4 den xhtml-Namespace, aber unter PHP 5 nicht (Habe es schon mit
exclude-result-prefixes="xhtml" versucht - kein Erfolg). Bei einigen
Elementen kopiert er auch immer einen leeren Namensraum in die Elemente
(xmlns="").

4.) Wird wohl nicht am Parser liegen: Wie kann ich eine Ausgabe als
UTF-8 erzwingen? Der Apache reicht ISO-8859-1 raus, aber ich lege unter
anderem mit ' content="text/html; charset=UTF-8">' ja einen anderen Contenttype fest?!

5.) Wie kann ich mit PHP4 gegen ein Schema validieren? Habe noch nichts
aussagekräftiges gefunden...

Das wären so meine ersten Fragen, habe extra XSL/XML gewählt um soweit
wie möglich unabhängig von einer Programmiersprache/Parser zu sein...
War wohl nichts?!

Ciao, Robert Fritzsching

Re: Unterschiede in XML-Verarbeitung zwischen PHP4 und PHP5

am 25.07.2006 14:47:53 von Ulf Kadner

Robert Fritzsching wrote:

> Ich transformiere und validiere zwei XML mit Hilfe der
> DOMDocument-Funktionen von PHP5, dies funktioniert auch sehr gut und so
> wie gewünscht. Nun muss ich aber diese Transformationen auch auf einem
> anderen Webserver durchführen, welcher nur PHP4.4.2 zur Verfügung
> stellt. Dazu verwende ich nun die XSLT-Funktionen dieser Version.
> Das Dokument wird auch transformiert, jedoch gibt es einige Probleme bei
> denen ich im Moment nicht weiter weiß:
>
> 1.) Der Parser bringt eine Fehlermeldung sobald ich einen
> Kommentarknoten verarbeiten möchte?!

Ist das ein Frage oder Aussage?
Welche Fehlermeldung?

> 2.) Wenn ich als ' > doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-stric t.dtd"
> doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"/>' wähle, werden unter
> PHP4 leere Elemente ohne Leerzeichen ausgegeben (zb.
statt > />).

Woher weist Du den das der von Dir verwendete Parser dies so handhabt
wie Du Dir das vorstellst?

> nicht zurechtkommen. Wenn ich 'method="html"' stelle, werden wiederum
> die leeren Elemente nicht geschlossen und ich erhalte kein gültiges
> xhtml (zb: ' > type="text/css" href="link.css">').

Ich würde hier eines der zahlreichen fertigen Packete zur
XSL-Verarbeitung nutzen. (Google kennt sie alle)

MfG, Ulf

Re: Unterschiede in XML-Verarbeitung zwischen PHP4 und PHP5

am 25.07.2006 16:12:43 von Robert Fritzsching

Hallo,

>> 1.) Der Parser bringt eine Fehlermeldung sobald ich einen
>> Kommentarknoten verarbeiten möchte?!
> Ist das ein Frage oder Aussage?
Das war eine Aussage! Unter PHP5 gehts mit dem 4er kommt folgendes:

Und verwenden tue ich es in folgender Form:

Ist sicher etwas umständlich, aber der Feinschliff kommt ja erst noch.

> Woher weist Du den das der von Dir verwendete Parser dies so handhabt
> wie Du Dir das vorstellst?
Ich kann eben nur von dem System sprechen, auf dem es funktioniert - und
da verwende ich die DOM-Funktionen von PHP5 mit
DOMDocument->schemaValidate() zum Validieren und XSLTProcessor zum
Transformieren.

> Ich würde hier eines der zahlreichen fertigen Packete zur
> XSL-Verarbeitung nutzen. (Google kennt sie alle)
Kannst Du mir eines nennen? Im Moment weiß ich gar nicht was für ein
Package gemeint ist und was ich damit soll.

Adios, Robert

Re: Unterschiede in XML-Verarbeitung zwischen PHP4 und PHP5

am 27.07.2006 13:53:44 von Robert Fritzsching

Hallo,

gibt es denn keinen der mir weiterhelfen könnte?

Danke!


Robert Fritzsching