複数の XML スキーマで制約された XML ドキュメントでのコード補完の使用
関連項目
少なくとも 1 つのスキーマファイルに、ワイルドカードとして知られる xsd:any または xsd:anyAttribute がある場合に、複数のスキーマファイルによって XML インスタンスドキュメントを制約できます。これらのワイルドカードを使用すると、名前空間によってコード補完の情報が制限されます。xsd:any と xsd:anyAttribute は、ともに任意のnamespace 属性が付きます。次の表に、namespace 属性値に基づいてワイルドカードが置換されるしくみを示します。
| namespace 値 |
置換 |
| ##any |
任意の名前空間の任意の要素 |
| ##other |
targetNamespace 以外のその他の名前空間の任意の要素 |
| ##targetNamespace |
targetNamespace の任意の要素 |
| ##local |
任意の修飾されていない要素 (名前空間なし) |
| URI のリスト |
指定した名前空間の要素 |
たとえば、次のようになっているとします。
<a:RootA xmlns:a="http://xml.netbeans.org/schema/A"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xml.netbeans.org/schema/A A.xsd
http://xml.netbeans.org/schema/B B.xsd
http://xml.netbeans.org/schema/C C.xsd">
< (現在のカーソルの位置)
</a:RootA>
この例では、RootA はスキーマ A.xsd で定義されたルート要素の 1 つです。RootA に xsd:any 子要素があった場合、前出の表に示す置換規則に従って、さまざまな名前空間からの項目がカーソル位置に表示されます。xsd:anyAttribute の場合も同様のことがあてはまります。
規則と制限
- xsd:any または xsd:anyAttribute の定義
xsd:any (または xsd:anyAttribute) は base 制約スキーマのルート要素に存在する必要があります。たとえば、次のようになっているとします。
- A.xsd、B.xsd、および C.xsd を使用して、instance.xml を制約しています。
- 制約に使用するルート要素は、A-Element という A.xsd のルート要素です。
この場合、xsd:any (または xsd:anyAttribute) を A-Element に定義して、instance.xml の A.xsd、B.xsd、および C.xsd からアーティファクトを表示する必要があります。
- XML インスタンスドキュメントの作成時の複数のファイルの選択
IDE で XML インスタンスドキュメントを作成する場合、そのドキュメントを制約するために選択できる XML スキーマファイルは 1 つだけです。ソースエディタを使用して、ほかのスキーマファイルへの参照を追加する必要があります。
- スキーマファイルを制約する場所
XML インスタンスドキュメントの制約に使用するスキーマファイルがファイルシステムで使用できることを確認します。このリリースでは、XML インスタンスドキュメントの制約の目的で、外部のスキーマファイルを参照することはできません。
複数の XML スキーマファイルによって制約される XML ドキュメントを作成し、コード補完を起動する
- メインメニューから「ファイル」>「新規ファイル」を選択します。
「新規ファイル」ウィザードが開きます。
- 「カテゴリ」の下で、「XML」ノードを選択し、「ファイルの種類」の下で「XML ドキュメント」ノードを選択し、「次へ」をクリックします。
- ドキュメントの名前と場所を指定し、「次へ」をクリックします。
- 「XML スキーマで定義されたドキュメント」ラジオボタンを選択し、「次へ」をクリックします。
- 「スキーマ URI」フィールドの横の「参照」ボタンをクリックして、XML インスタンスドキュメントを制約する最初のスキーマファイルに移動して選択します。
スキーマファイルを選択した場合、「ドキュメント名前空間」フィールドおよび「ルート要素」フィールドに入力されます。スキーマにターゲット名前空間がない場合は、「ドキュメント名前空間」フィールドが空白になります。
- スキーマに複数の要素がある場合は、「ルート要素」ドロップダウンリストから制約に使用する要素を選択します。
- 「完了」をクリックします。
「プロジェクト」ウィンドウに新しい .xml ファイルのノードが追加され、ソースエディタに新しいファイルが表示されます。
- ソースエディタで、xsi:schemaLocation 値を更新して、スキーマファイルを追加します。
次に示す例では、base-schema-targetNamespace は手順 5 で選択したスキーマのターゲット名前空間で、base-schema は .xsd ファイルのパスとファイルの名前です。
xsi:schemaLocation='base-schema-targetNamespace base-schema
second-schema-targetNamespace second-schema
third-schema-targetNamespace third-schema'
- 変更を保存します。
- XML ドキュメントの「ソースエディタ」タブで、内容の追加を開始する位置にカーソルを移動し、開始の小なり括弧 (< ) を入力します。
コード補完ボックスが開きます。このボックスには、スキーマ要素のスクロールリストがあります。要素のリストは、現在の XML ファイルを制約する XML スキーマファイルに基づいたものになります。
- ワイルドカードを使用して、別の名前空間から要素を選択すると、その要素の名前空間宣言が自動的に挿入されます。IDE は ns1 から始まる別の接頭辞を試し、一致が見つかると、「xmlns:ns1="targetNamespace-of-selected-element"」のように、宣言を追加します。
- 関連項目
- XML スキーマで制約された XML インスタンスドキュメントでのコード補完の使用について
- XML スキーマツールについて
著作権と商標について