受信したHTTPヘッダーがXSLファイルタイプに対して正しくない/予期しない
-
05-07-2019 - |
質問
XSLファイルを取得するためにPHP + curlを使用していますが、最初に、ファイルが実際にXSLファイルであるという最小限の検証を行います。
ファイルが存在し、ステータスコード200 OKであり、ファイル拡張子が正しいことを確認しますが、Content-Typeのヘッダーを確認したいと思います。これは curl_getinfo()
関数を使用して行います。すべて順調です。
ただし、XSLファイルは常に" application / xml
"を返します。または" text / xml
" XMLファイル用のContent-Typeとして。 XSLヘッダーは" application / xslt + xml
"でなければなりません。ここで何が起こっているのか、そしてそれがXSLドキュメントであることをどのように確認できますか?
解決
ファイルのXSLT名前空間を確認できます。
PHPバージョン> = 5.1.2の場合、 を使用しますSimpleXMLElement :: getNamespaces()
他のヒント
これを使用して、サードパーティのサイトまたは自分で設定したサイトにアクセスしていますか?自分のサイトの場合は、ファイル拡張子に応じて適切なMIMEタイプを提供するようにApacheをセットアップする必要があります。
サードパーティのサイトの場合、MIMEタイプが信頼できるかどうかはわかりません。MIMEタイプは必要なものを提供できるからです。最善の策は、おそらくファイルの最初の数行を取得し、ルート要素がxslであることを確認することです。
PHP 5の異なるアプローチ:
- XSLTProcessor にスタイルシートをロードしてみてください。スタイルシートが正しくない場合、例外がスローされる可能性があります
- (より良い私見)検証そのスキーマに対するXSLスタイルシート