web-dev-qa-db-ja.com

web.xmlに対する偽のEclipse警告:「ドキュメントに対して文法制約(DTDまたはXMLスキーマ)が検出されませんでした。」

私のトップweb.xmlファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://Java.Sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/j2ee http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd"
    version="2.5">

しかし、Eclipse(Ganymede)から、XMLスキーマが検出されず、スキーマ違反が警告されていないという警告が引き続き表示されます。私のプロジェクトの他のXMLファイル( Spring Framework 構成ファイルなど)には警告がなく、スキーマ違反に関する正しい警告が表示されます。

スキーマチェックを機能させるにはどうすればよいですか?サーバーは正しく実行されます。 IDE問題。

34
Brian Deacon

おそらく試してみてください:

http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd

の代わりに:

http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd

また、<!DOCTYPE ...> 不足している:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<web-app
  xmlns="http://Java.Sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">
  <!-- ... -->
</web-app>
26
toolkit

私もその警告が嫌いです。特別な理由は、作成していないXMLファイルには表示されますが、何らかの理由でプロジェクトに表示されるためです(MAVENを使用している場合は地獄です)。

Eclipse 3.5以降では、この検証ルールを簡単に削除できます。 [設定]-> [XML]-> [XMLファイル]-> [検証]に移動し、[無視]を選択します。

また、検証の警告が消えるには、プロジェクト->クリーンを実行する必要があります。

alt text

46
monzonj

保存された検証ファイルのキャッシュをクリアします。

[ウィンドウ]> [設定]> [全般]> [ネットワーク接続]> [キャッシュしてからすべて削除]。次に、ファイルを検証して、問題が解決するかどうかを確認します。

これは私に思いがけず、検証のためにキャッシュをクリアすることが、キャッシュを再び適切に機能させる唯一の方法でした。ダーティキャッシュをクリアするためのアドバイスが見つかりました here

10
Tiris

XMLエディターがXSDファイルを見つけられなかったために同じ(誤解を招く)エラーメッセージが表示される場合は、カタログエントリを追加できます。

次のような宣言のために、スキーマに指定されたURLを選択します

xsi:schemaLocation="http://Java.Sun.com/xml/ns/j2ee 
                      http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd"

スキーマファイルのURL(http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd)は、名前空間に指定されています http://Java.Sun.com/xml/ ns/j2ee 。 Eclipseのワークスペースカタログでファイルの場所をリダイレクトできるようになりました。

Preferences -> XML -> XML Catalog -> Add..

使用する

Key Type = Schema Location
Key = http://Java.Sun.com/xml/ns/j2ee/web-app_2_5.xsd

そして、ファイル選択ツールを使用して、実際にファイルシステムまたはワークスペース上のXSDファイルを選択できます。

2
eckes

私の答えも見ることができます 同様の質問について

基本的に、必要なルールに準拠するようにXMLを書くだけです

0
Damilola

問題は2つあります。

  1. Eclipseには、多くの有名なXSDのキャッシュが付属しています。指定した名前空間および/または場所がこれらのいずれとも一致しません。
  2. そのため、Eclipseは、提供されたURIでインターネット上のXSDを探しに行こうとします(動作する可能性があります)。残念ながら、OracleがJava.Sun.comを修正した後、Eclipseでこのメカニズムがタイムアウトするようです(サーバーは単に「存在しない、申し訳ありません」と言うのではなく、ホームページにリダイレクトします)。

Java EE 5の正しい値に修正すると、キャッシュ内のエントリが見つかり、Eclipseが満足します。