57

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

4

3 に答える 3

57

file://の値の後にもう 1 つスラッシュを追加しますxsi:schemaLocation。(2 つあり、3 つ必要です。protocol://host/pathここでprotocolis'file'hostis が空であると考えて、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) 以外をすべて削除し、親ディレクトリを表示できないかどうかを確認します。パスが実際のローカル ファイル システムから分岐している場所が見つかるまで、この方法でディレクトリ構造をたどっていきます。

XSDブラウザに表示される場合は、使用している XML プロセッサを明記し、それが壊れているか、何らかの制限を回避する必要があることを聞く準備をしてください。上記の修正は、私の Xerces-J ベースのバリデーターで機能すると言えます。

于 2013-10-08T17:09:53.177 に答える
4

xsdファイルへのパスに「é」などの「奇妙な」文字が含まれていないことを確認するのに役立つ場合があります。同じ問題がありましたが、「é」のないパスに変更すると、エラーが消えました。

于 2014-07-23T23:53:44.703 に答える