web-dev-qa-db-ja.com

ローカルXMLスキーマファイルを正しく参照する方法

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 からのものでした:彼らは、私が試みた方法で動作するはずだと主張しています。しかし、そうではありません。

45
Arturas M

file://の値のxsi:schemaLocationの後にスラッシュをもう1つ追加します。 (2つあります。3つ必要です。ここで、protocol://Host/pathprotocol'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ベースのバリデーターで動作することをお伝えします。

41
kjhughes

Xsdファイルへのパスに「é」などの「奇妙な」文字がないことを確認するのに役立つかもしれません:同じ問題を抱えていましたが、「é」のないパスに変更するとエラーが消えました。

3
gamoz