我正在使用PHP + curl来检索XSL文件,但首先我想做一些最小的验证,该文件实际上是一个XSL文件。

我确保文件存在,状态代码为200,并且文件扩展名正确,但我想检查Content-Type的标题。我使用 curl_getinfo()函数执行此操作。一切都很好。

但是XSL文件总是返回" application / xml "或“ text / xml ”作为Content-Type,用于XML文件。我相信XSL标题应该是“ application / xslt + xml ”。那么这里发生了什么,我怎样才能确定它是一个XSL文档?

有帮助吗?

解决方案

您可以检查文件中的XSLT命名空间。 如果PHP版本> = 5.1.2,请使用 的SimpleXMLElement ::使用getNamespaces()

其他提示

您是否使用它来访问第三方网站或您自己配置的网站?如果它是您自己的站点,则需要根据文件扩展名设置Apache以提供适当的mime类型。

如果是第三方网站,我不确定你可以依赖mime类型,因为它们可以随心所欲地提供服务。最好的办法可能就是获取文件的前几行并检查根元素是否为xsl。

针对PHP 5的不同方法:

  1. 您可以尝试在 XSLTProcessor 中加载样式表。如果样式表不正确,可能会抛出异常
  2. (Better IMHO)根据其架构验证 XSL样式表
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top