2

システムに必要な特定の XML ファイルを検証するための XML スキーマ ドキュメント (取引先の会社から提供されたもの) があります。

スキーマの最初の数行が次のようになっているとしましょう (有罪を保護するために URI を変更しました!):

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://www.example.com/manifest-plugin"
xmlns="http://www.example.com/manifest-plugin">

XSD の URI は、変更されていないオリジナルでは無効です。つまり、この XSD ファイルのコピーを取得するためにそこに行くことはできません。XSD で定義された URL で公開していない理由はわかりませんが、公開していません。

Eclipse の XML カタログの機能を使用して作成した XML ファイルを検証するために使用したい XSD のローカル コピーがあります。明らかに、URI が無効であるため、システムが Web から XSD を取得しようとしても意味がありません。

ローカル XSD ファイルがローカル ドライブにあるとします。

C:\xml_schemas\manifest-plugin.xsd

XML ファイルの最初の 2 行は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

誰かがこれを行う方法の例を挙げてもらえますか?

具体的には:

  1. 上記で提供した値に基づいて、Eclipse の XML カタログ ダイアログ ボックスにどのような値を設定すればよいですか?
  2. XML ファイルをローカルの XSD に対して検証するには、XML ファイルに何を入れればよいでしょうか。

私はEclipse wikiでこのページを見つけましたが、個人的には指示があまり明確ではありません:-

Eclipse での XML カタログの使用

XML カタログ パラメータを次のように設定してみました。

次に追加

<manifest xmlns:targetNamespace="http://www.example.com/manifest-plugin">

XMLファイルに追加しましたが、うまくいかないようです。

ちなみに、お使いのバージョンの Eclipse に XML カタログがない場合は、おそらく「Web ツール プラットフォーム (WTP)」機能がインストールされていません。これらは Eclipse の Java EE バージョンに付属していますが、個別にインストールできます。

4

3 に答える 3

2

それはかなり簡単なはずです。XML カタログ設定ページから [追加] をクリックして、[XML カタログ要素の追加] ダイアログを表示します。そこに、次の属性を持つカタログ エントリを追加します。

ローカル XSD は、ワークスペース (Eclipse パス変数を使用) またはワークスペース外部のファイル システムのいずれかに配置できます。エントリを追加すると、Eclipse はワークスペース内の XML ドキュメントを検証できるようになります。

XML カタログは、XML ドキュメントのアプリケーション ランタイム検証とは何の関係もないことに注意してください。

更新: XML ファイルには次の内容が含まれている必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns="http://www.example.com/manifest-plugin">
...

Eclipse 3.6 または 3.7 では、次のようなダイアログが表示されます。 ここに画像の説明を入力

于 2012-02-01T14:21:16.707 に答える
1

私が間違っていなければ、XML スキーマ ファイルのリモートの場所よりも優先されるローカルのスキーマの場所を指定できます。

そのため、XSD ファイルを XML ファイルがあるディレクトリに置く場合、manifest.xml ファイルのヘッダーは次のようになります。

<manifest xmlns="http://my.super.xsd.com" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.w3schools.com manifest.xsd">

私は Eclipse でテストしましたが、動作します (XSD リンクをクリックすることもできます)。これで、XSD ファイルと XML ファイルの両方が同じディレクトリにある場合に機能します。

XSD を別のローカル ロケーションに配置する場合は、fileプロトコルを使用する必要があります。例を考えると、XML ファイルは次のようになります。

<manifest xmlns="http://my.super.xsd.com" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.w3schools.com file:///C|/xml_schemas/manifest-plugin.xsd"">

この例は Eclipse でも動作しますが、XSD をクリックすると Web ブラウザーが開きます (少なくとも私にとっては)。

于 2012-02-01T13:15:05.377 に答える
0

xml で schemaloaction が指定されていない場合は、Eclipse で XML catelog を使用してスキーマの場所をオーバーライドできるはずです。

于 2012-11-07T06:14:26.623 に答える