Pregunta

Estoy usando PHP + curl para recuperar un archivo XSL, pero primero quiero hacer una validación mínima de que el archivo es realmente un archivo XSL.

Me aseguro de que el archivo exista, tenga un código de estado 200 OK, y que tenga la extensión de archivo correcta, pero luego quiero verificar el encabezado del Contenido-Tipo. Hago esto usando la función curl_getinfo () . Todo bien.

Pero los archivos XSL siempre devuelven " application / xml " o " text / xml " como el tipo de contenido, que es para archivos XML. Creo que un encabezado XSL debería ser " application / xslt + xml " ;. Entonces, ¿qué está pasando aquí y cómo puedo asegurarme de que sea un documento XSL?

¿Fue útil?

Solución

Puede verificar el espacio de nombres XSLT en el archivo. Si la versión de PHP > = 5.1.2, use SimpleXMLElement :: getNamespaces ()

Otros consejos

¿Está utilizando esto para acceder a sitios de terceros o a un sitio que usted mismo configura? Si se trata de su propio sitio, deberá configurar Apache para que sirva los tipos de mime adecuados en función de la extensión del archivo.

Si se trata de sitios de terceros, no estoy seguro de que pueda confiar en los tipos de mimo, ya que pueden servir lo que quieran. La mejor opción es probablemente obtener las primeras líneas del archivo y verificar que el elemento raíz sea xsl.

Enfoque diferente, para PHP 5:

  1. Puede intentar cargar la hoja de estilo en un XSLTProcessor . Tal vez se lance una excepción si la hoja de estilo es incorrecta
  2. (Mejor IMHO) Valide la hoja de estilo XSL contra su esquema
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top