拡張概念: 任意のエレメントを使用した拡張可能コンテンツ・モデルの作成

このサンプルは、XML スキーマの任意のエレメントを使用して、XML 文書に拡張可能なコンテンツ・モデルを作成する方法を示します。 サンプルは、次の 2 つのディレクトリーに分かれます。

  1. anyNamespace - ## 任意の名前空間の使用方法を示します。
  2. specifiedNamespace -  特定の名前空間の使用方法を示します。


## 任意の名前空間の使用

anyNamespace ディレクトリーの下の Book.xsd スキーマの複合タイプは BookType です。 BookType のコンテンツは、title (タイトル)、author (作成者)、year (年)、isbn、および then (次に) で、オプションで、以下の任意のエレメントが示す整形式の XML が続きます。
   <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>

これは、インスタンス・ドキュメントには、任意の XML エレメントを挿入して、BookType 定義を拡張できることを意味します。 このサンプルには、ほかに Publisher.xsd と Reviewer.xsd の 2 つのスキーマがあります。 インスタンス・ドキュメントでは、これらを使用して BookType の定義を拡張します。 これら 2 つのスキーマは名前空間が異なることに注意してください。

BookRev.xml は、xsi:schemaLocation 属性によって Book.xsd と Reviewer.xsd の両方に関連付けられています。 これは、BookType検閲者 (reviewer) エレメントによって拡張し、ブックに検閲コメントを付ける方法を示します。

BookPub.xml は、xsi:schemaLocation 属性によって both Book.xsd および Publisher.xsd に関連付けられています。 これは、BookType会社 (company) エレメントによって拡張し、ブックにパブリッシャー情報を付ける方法を示します。

特定名前空間の使用

specifiedNamespace ディレクトリーの下の Book.xsd スキーマの複合タイプは BookType です。 BookType のコンテンツは、title (タイトル)、author (作成者)、year (年)、isbn、および then (次に) で、オプションで、以下の任意のエレメントが示す、名前空間 http://www.wesley.com に属する整形式の XML が続きます。
   <any namespace="http://www.wesley.com" minOccurs="0" maxOccurs="unbounded"/>

これは、インスタンス・ドキュメントには、任意の XML エレメントを挿入して、BookType 定義を拡張できることを意味します (それらのエレメントが名前空間 http://www.wesley.com に属している場合に限り)。 このサンプルで、Reviewer.xsd ファイルはこの名前空間に属しています。

Book.xml は、xsi:schemaLocation 属性によって Book.xsd と Reviewer.xsd の両方に関連付けられています。 これは、BookType検閲者 (reviewer) エレメントによって拡張し、ブックに検閲コメントを付ける方法を示します。

Book.xml の場合、XML エディターの「設計」ビューで、rev:reviewer エレメントを選択します。 ポップアップ・メニューから、「子の追加」->「コメント」」を選択して、検閲者のコメントを追加します。 「検証」を実行して、ドキュメントが有効であることを確認します。


任意のエレメントのスキーマからのインスタンスの生成

この新規 XML ウィザードは、XML スキーマのインスタンスを作成する際に使用できます。 スキーマに、名前空間 uri を指定した任意のエレメントが含まれている場合は (specifiedNamespace ディレクトリーの Book.xsd からの BookTypeのような)、ウィザードから、これらの名前空間のスキーマ・ロケーションを入力するようにプロンプトが出されます。

「新規 XML」ウィザードから、正しいコンテンツの生成に必要なスキーマ・ロケーションを求めるプロンプトが出されます。  上記のステップを繰り返して、「http://www.wesley.com」名前空間のスキーマ・ロケーションを入力しない場合は、会社 (company) エレメントではなく ANY-ELEMENT プレースホルダー・エレメントが生成されることが分かります。 希望するエレメントを組み込むには、ANY-ELEMENT の変更が必要です。


名前空間の XML 文書への追加

XML エディターには、名前空間を XML 文書に追加する便利な手段があります。 名前空間を手動で追加 (ソース・ビューで入力) するとエラーになりやすく、スキーマ名前空間 URI の場合は簡単につづりを誤り、スキーマ・ロケーションの属性構文は扱いにくい場合があります。 作業の助けとなる役立つダイアログがあります。 「アウトライン」または「設計」ビューで「スキーマ情報の編集」ダイアログにアクセスして、この作業での助けとすることができます。