XMLファイルでXMLスキーマを参照するときにこの問題が発生します。
このパスにXSDがあります。
C:\environment\workspace\maven-ws\ProjectXmlSchema\email.xsd
しかし、XMLファイルで次のようなスキーマを見つけようとすると、XSDが見つかりません。
<?xml version="1.0" encoding="UTF-8" ?>
<email xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com
file://C://environment//workspace//maven-ws//ProjextXmlSchema//email.xsd">
XSDが検出される唯一の方法は、同じフォルダー内にある場合です。
xsi:schemaLocation="http://www.w3schools.com email.xsd"
質問は次のとおりです:XMLファイルがXSDファイルと同じフォルダーにない場合にXSDが見つかるように、パスはどのように見える必要がありますか?
ちなみに、私が使用している例は MSDN からのものでした:彼らは、私が試みた方法で動作するはずだと主張しています。しかし、そうではありません。
file://
の値のxsi:schemaLocation
の後にスラッシュをもう1つ追加します。 (2つあります。3つ必要です。ここで、protocol://Host/path
はprotocol
は'file'
で、Host
は空で、3つのスラッシュが連続して発生していると考えてください。 path
に沿った二重スラッシュ。ダブルスラッシュは、ファイル名とディレクトリ名にスペースを許可するファイルシステムに役立つと思いますが、パスの命名におけるその複雑さを賢明に回避しました。
xsi:schemaLocation="http://www.w3schools.com file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd"
まだ動作しませんか?慎重に行うことをお勧めしますXSDの完全なファイル仕様をChromeまたはFirefoxのアドレスバーにコピーします:
file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd
XSDがブラウザに表示されない場合、パスの最後のコンポーネント(email.xsd)を除くすべてを削除し、親ディレクトリを表示できないかどうかを確認してください。この方法で続けて、パスがローカルファイルシステムの現実からどこに分岐するかがわかるまで、ディレクトリ構造を上に向かって進みます。
XSDdoesがブラウザに表示されるの場合、使用しているXMLプロセッサを明記し、そのことを聞く準備をします壊れているか、何らかの制限を回避する必要があります。上記の修正は、私のXerces-Jベースのバリデーターで動作することをお伝えします。
Xsdファイルへのパスに「é」などの「奇妙な」文字がないことを確認するのに役立つかもしれません:同じ問題を抱えていましたが、「é」のないパスに変更するとエラーが消えました。