これらのサンプルは、XML エディター内の一部のガイド付き編集機能を使用して XML ファイルの編集および検証を行う方法を示します。 DTD または XML スキーマの制約を伴う XML ファイルの編集についての詳細は、XML エディターのオンライン・ヘルプを参照してください。
サンプル | 説明 |
---|---|
anyElement | これは、XML スキーマ仕様の任意の要素を使用して、XML 文書のコンテンツ・モデルを拡張する方法を示す、拡張サンプルです。 |
PurchaseOrder.xml の編集 | XML スキーマ・ファイル (PurchaseOrder.xsd) を、XML ファイル (PurchaseOrder.xml) の編集時に編集支援を提供するのに使用する方法を示します。 国際ディレクトリーは、派生型のビルド方法および XML インスタンス文書で xsi:type 属性を使用する方法を示します。 report.xsd サンプルは、さまざまな名前空間から複数のスキーマを処理する方法を示します。 |
置換グループの使用 | XML スキーマでは要素の名前付きグループをその他の要素に代替できることを、 示します。 |
## 任意の名前空間の使用
anyNamespace ディレクトリー下 にある Book.xsd スキーマの複合タイプは BookType です。 BookType のコンテンツは、title (タイトル)、 author (作成者)、year (年)、isbn (ISBN: 国際標準図書番号) です。 オプションで、任意の要素によって示される 整形式 XML (<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>) が続きます。
これは、インスタンス文書に任意の XML 要素を 挿入して、BookType 定義を拡張できることを意味します。 このサンプルには、ほかに Publisher.xsd と Reviewer.xsd の 2 つのスキーマがあります。 インスタンス文書では、これらを使用して BookType の定義を拡張します。 これら 2 つのスキーマは名前空間が異なることに注意してください。
特定名前空間の使用
specifiedNamespace ディレクトリー下 にある Book.xsd スキーマの複合タイプは BookType です。 BookType のコンテンツは、title (タイトル)、author (作成者)、year (年)、isbn (ISBN: 国際標準図書番号) です。 オプションで、名前空間 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」ウィザードから、正しいコンテンツの生成に必要なスキーマ・ロケーションを求めるプロンプトが出されます。 上記のステップを繰り返した場合に、 「http://www.wesley.com」名前空間のスキーマ・ロケーションを 入力しないことを選択すると、会社 (company) 要素の 代わりに、ANY-ELEMENT プレースホルダー要素が生成されることが分かります。 希望する要素を組み込むには、ANY-ELEMENT の変更が必要になります。
名前空間の XML 文書への追加
PurchaseOrder.xsd ファイルには、PurchaseOrder.xml ファイルのコンテンツを定義するためのルールがあります。 このファイルは、xsi:schemaLocation 属性によって PurchaseOrder.xml ファイルに関連付けられています。
オカレンス制約
<element name="shipDate" type="date" minOccurs="0"/>
PurchaseOrder.xml の場合は、XML エディターの「設計」ビューで、item 要素の 下にある最初の項目 (item) を選択します。 これを右クリックして、「子の追加」ポップアップ・メニュ ーから shipDate オプションがなくなっていること に注意してください。
と選択して、shipDate を item 要素に追加します。 値が現在日付に設定された shipDate 要素が追加されます。 最大で 1 つの shipDate 要素を持つという制約が満たさ れているため、shipDate 要素を選択し、 ポップアップ・メニューから「除去」を 選択してこの要素を除去すると、 オプション が再度使用可能になります。
列挙型要素タイプ
<element name="state" type="po:USState"/>
<simpleType name="USState"> <restriction base="string"> <enumeration value="CA"></enumeration> <enumeration value="PA"></enumeration> <enumeration value="AR"></enumeration> </restriction> </simpleType>
PurchaseOrder.xml の場合は、XML エディターの 「設計」ビューで、shipTo 要素の下にある 「州 (state)」テキスト・フィールドを選択します。 リストが表示され、そこで USState 単純型の列挙値によって限定された 3 つの値 (CA、PA、および AR) から選択できます。
インスタンス文書での派生型の使用 (xsi:type 属性)
<element name="shipTo" type="ipo:Address"/> <element name="billTo" type="ipo:Address"/>
address.xsd では、2 つの複合タイプ USAddress および UKAddress で基本型アドレス (Address) を拡張します。
インスタンス文書 ipo.xml は、xsi:type 属性を使うことにより、 アドレス (Address) のさまざまな導出 (例えば、USAddress など) を使用することができます。
XML エディターの「設計」ビューで、shipTo 要素の下の xsi:type 属性を選択します。 使用したい Address 型を選択できるように、リストがどのように使用可能になっているかに注意してください。 ガイドによる支援は、コンボ・ボックスで選択するタイプによって決まります。
複数のスキーマと名前空間の作業
季刊レポート・サンプルは、さまざまな名前空間からの複数のスキーマを処理する方法を示します。 このサンプルは、PurchaseOrder/international フォルダーの 下に、address.xsd、ipo.xsd、report.xsd、report.xml などのファイルを含んでいます。
スキーマが大きくなるにつれ、保守、再利用および読み易さなどの目的から、そのコンテンツをいくつかのスキーマ・ドキュメントに分割することがしばしば望まれます。 XML スキーマは、このサポートのために、インクルード (include) およびインポート (import) の 2 つの構成を定義します。 インクルード (include) 要素は、組み込まれたスキーマからの定義および宣言を現在のスキーマに取り入れます。 これには、組み込まれたスキーマが組み込むスキーマと同じターゲット名前空間内にある必要があります。 インポート (import) 要素の動作は、インポートされたスキーマが異なる名前空間からくることができる点を除き、類似しています。
インクルード (include) およびインポート (import) について詳しくは、XML スキーマ・エディターのオンライン・ヘルプを参照してください。
<element name="Book" type="Catalogue:BookType" substitutionGroup="Catalogue:Publication"/> <element name="Magazine" type="Catalogue:MagazineType" substitutionGroup="Catalogue:Publication"/>
カタログ (Catalogue) のコンテンツは、置換グループ内の任意の要素にすることができます。 XML エディターの「設計」ビューで、カタログ (Catalogue) 要素の 「子の追加」メニューを選択します。 ブック (Book) および マガジン (Magazine) の両方が パブリケーション (Publication) 要素のコンテンツとして代替する方法に注意してください。 さらに、Publication 要素を 要約 (abstract) として宣言して、 Publication 要素がインスタンス文書内で直接使用されることを防ぎます。