
XML マップを使用した置換可能なエレメントのマッピング
置換グループは、エレメントのセットがヘッド・エレメントを置換できるようにする XML スキーマ (XSD) の構成です。 XML インスタンスは、置換グループのエレメントを 1 つだけ含むことができます。 置換グループのエレメントは XML マップ内でマップできます。
始める前に
最上位エレメントはいずれも、置換グループのヘッド・エレメントとして定義することができます。 さらに、他の最上位エレメントは置換グループのメンバーとなって、ヘッド・エレメントを置換できます。 置換可能なエレメントは、ヘッド・エレメントと同じタイプであるか、拡張または制限によってヘッド・エレメントから派生させたものであることが必要です。
業界標準のスキーマの多くには置換グループが含まれています。置換グループ Publication を含む単純なスキーマの例を以下に示します。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://SubstitutionGroups/catalog"
xmlns:tns="http://SubstitutionGroups/catalog" elementFormDefault="qualified">
<complexType name="BookType">
<complexContent>
<extension base="tns:PublicationType">
<sequence>
<element name="isbn" type="string"/>
<element name="publisher" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="MagazineType">
<complexContent>
<restriction base="tns:PublicationType">
<sequence>
<element name="title" type="string"/>
<element name="author" type="string"/>
<element name="date" type="gYear"/>
</sequence>
</restriction>
</complexContent>
</complexType>
1 <element abstract="true" name="Publication" type="tns:PublicationType"/>
2 <element name="Book" substitutionGroup="tns:Publication" type="tns:BookType"/>
3 <element name="Magazine" substitutionGroup="tns:Publication" type="tns:MagazineType"/>
4 <element name="Catalog">
<complexType>
<sequence>
<element ref="tns:Publication" minOccurs="1"/>
</sequence>
</complexType>
</element>
</schema>
- 1 Publication はヘッド・エレメントです。
- 2 Book は置換可能なエレメントで、このヘッド・エレメントは Publication です。
- 3 Magazine は置換可能なエレメントで、このヘッド・エレメントも Publication です。
- 4 Catalog は Publication を参照する complexType です。
エレメント Catalog をルートとして持つ、対応する XML インスタンスは、Publication エレメント、Book エレメント、または Magazine エレメントのいずれかを含むことができます。
<?xml version="1.0" encoding="UTF-8"?>
<tns:Catalog xmlns:tns="http://SubstitutionGroups/catalog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://SubstitutionGroups/catalog foo.xsd ">
<tns:Book>
<tns:title>tns:title</tns:title>
<tns:author>tns:author</tns:author>
<tns:date>2001</tns:date>
<tns:isbn>tns:isbn</tns:isbn>
<tns:publisher>tns:publisher</tns:publisher>
</tns:Book>
</tns:Catalog>
ソースまたはターゲットのコンテンツ・モデルにヘッド・エレメント参照があるとき、置換グループのすべてのメンバーが XML マップ・エディターで使用可能になります。 ヘッド・エレメントは、アイコン
で表します。
次のイメージは、XML マップ・エディターのサンプル・スキーマを示しています。

ヒント: 置換グループの処理を行うとき、上のイメージで示すように、マップ・エディターの右上領域にある「詳細」ビューに切り替えます。 すると、「置換グループ」という見出しの下に置換グループ・エレメントが表示され、ヘッド・エレメントはグループ内の他のエレメントの上部に表示されます。
サンプル・スキーマ・マッピングの結果は、以下のようになります。
- XML インスタンスがエレメント Book を含む場合、Book について定義されたマッピングが実行されます。
- XML インスタンスがエレメント Magazine を含む場合、Publication について定義されたマッピングが実行されます。