XSLT mit PHP5

Inspector

Erfahrenes Mitglied
Hi,

ich hätte da mal eine etwas speziellere Frage: Ich möchte eine xml-Datei per xsl nach (x)html konvertieren. Das geht so weit auch ganz gut, aber es hat einen Haken: Es dauert viel zu lange. Sieht ganz so aus, als würde libxslt defaultmäßig eine Validierung durchführen. Das bedeutet Internetzugriffe, die schon mal per se lange dauern, plus unnötiger sonstiger Arbeit. Mir wäre es lieber ohne Validierung.

Die Basis meines Konstrukts ist DOMDocument und XSLTProcessor. Ich finde keine Möglichkeit, die Validierung abzuschalten.
 
Du könntest bereits gewandelte xhtml seiten auch cachen und erst wenn sich was an der Datei ändert neu generieren, das entlastet erheblich den Server und ist natürlich schneller. Und du kannst die Validierung weiterhin nutzen ohne dir sorgen zu machen.
 
Danke, aber das löst leider das Problem nicht, denn das mache ich sowieso schon. Ich werfe die ganze php-Mashcinerie nur an, wenn sich Etwas ändert. Dann werden u.U. eine ganze Reihe von statischen Seiten (html, xhtml, rss, eventuell diverse Sprachversionen, opml-Listen) erstellt. Leider dauert das durch die Validierung pro erstellter Datei etwa 1-3 Sekunden, je nach Verbindungsqualität. Es ist nicht so, dass der Rechner da so lange am werkeln ist, er wartet einfach nur auf Antwort aus dem Internet.

Wenn ich das mit dem Kommandozeilentool xsltproc mache, dann muss ich dem den Parameter --novalid mitgeben, um umfangreiche Updates in einer erträglichen zeit zu erledigen. Ansonsten kann es bei etlichen hundert Seiten wie bei meiner HP auch schon mal Stunden dauern. Mit --novalid ist es eine Sache von Minuten. Pro Transformation ist das mit --novalid eine Sache von Sekundenbruchteilen, ohne --novalid eine Sache von eben 1-3 Sekunden. Das ist ein Zeitunterschied im Bereich u.U. von mehreren Zehnerpotenzen.

Klar, wenn die Seiten mal erstellt sind, dann werden sie bis zur nächsten Änderung als statische Seiten rausgepustet ohne den Server signifikant zu belasten. Das ist auch genau so gewollt. Nur eben die lange Wartezeit bei der Validierung nach einer Änderung, die ist unakzeptabel.
 
Mhhhh... soweit ich weiss arbeitet libxslt mit libxml oder libxml2 zusammen. Leider hab ich das nicht alles im Kopf, aber eventuell kannst du dort die Validierung abstellen.
 
Stimmt. Aber ich habe so eine Abstellmöglichkeit bislang weder bei libxslt noch bei libxml oder libxml2 gefunden.

xsltproc ist das Kommandozeilentool, das direkt auf libxslt aufsetzt. Dort kann man die Validierung per Kommandozeilenparameter abstellen. Unter php würde ich eigentlich irgendeinen Parameter im Konstruktor von XSLTProcessor vermuten oder eine öffentlich zugängliche Membervariable oder eine Methode. Aber ich habe da Nix gefunden.
 
Zurück