Frage

Ich bin mit PHP + curl eine XSL-Datei, abgerufen werden, aber zunächst möchte ich einige minimale Validierung zu tun, dass die Datei wirklich eine XSL-Datei ist.

ich sicherstellen, dass die Datei vorhanden ist, hat Statuscode 200 OK, und dass es die richtige Dateierweiterung, aber dann möchte ich den Header für das Content-Type überprüfen. Ich tue dies mit curl_getinfo() Funktion. Alle in Ordnung.

Aber XSL-Dateien immer wieder zurückkehren "application/xml" oder "text/xml" als Content-Type, die für XML-Dateien ist. Ich glaube, ein XSL-Header sein sollte „application/xslt+xml“. Also hier, was los ist und wie kann ich sicherstellen, dass es ein XSL-Dokument?

War es hilfreich?

Lösung

können Sie überprüfen den XSLT-Namensraum in der Datei. Wenn PHP Version> = 5.1.2, verwenden Sie SimpleXMLElement::getNamespaces()

Andere Tipps

Verwenden Sie diese Websites von Drittanbietern oder eine Website zugreifen, die Sie selbst konfigurieren? Wenn es Ihre eigene Website ist, müssen Sie Apache einrichten, um den entsprechenden Mime-Typen in Abhängigkeit von der Dateierweiterung zu dienen.

Wenn es Websites Dritter ist, ich bin nicht sicher, dass Sie auf den Mime-Typen verlassen können, da sie dienen könnten, was sie wollen. Am besten ist es wahrscheinlich nur die ersten Zeilen der Datei zu erhalten und prüfen, ob das Wurzelelement ist xsl.

Verschiedener Ansatz für PHP 5:

  1. Sie könnten versuchen, das Stylesheet in einem XSLTProcessor zu laden. Vielleicht eine Ausnahme ausgelöst wird, wenn das Stylesheet ist falsch
  2. (Better IMHO) Validate der XSL-Stylesheet gegen das Schema
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top