|
XML ネームスペースは、XML ドキュメントの結合時または XML 要素の参照時に、名前の競合 (またはあいまいさ) が存在しないようにするためのメカニズムです。 BEA AquaLogic Data Services Platform は、XML ネームスペースを完全にサポートし、WebLogic Workshop で生成されるクエリにネームスペースを組み込みます。
ネームスペースは、XML ドキュメントで使用する名前を一意に区別するためのメカニズムを提供します。XML ネームスペースは、文字列とコロンの組み合わせとしてクエリに現れます。W3C は、特定のネームスペースのプレフィックスを使用して W3C XQuery のデータ型と関数を識別します。さらに BEA では、BEA が提供する関数とデータ型を一意に識別するために、fn-bea:
ネームスペースを定義しています。
表 4-1 は、XQuery AquaLogic Data Services Platform クエリで使用される定義済み XQuery ネームスペースの一覧です。
たとえば、xs:integer
データ型は XML ネームスペース xs
を使用します。実際には、xs
はネームスペース URI のエリアス (プレフィックス) です。
XML ネームスペースは、異種の XML ドキュメントからデータを結合するときに名前の競合が発生しないようにします。たとえば、自動車メーカーに関連するドキュメントに <tires> 要素があるとします。また、自転車タイヤ メーカーに関連する同じようなドキュメントにも <tires> 要素があるとします。この場合、これらの要素を結合するのは不適切であることは明らかです。XML ネームスペースは、要素を <automobile:tires> および <bicycle:tires> とすることでこうした名前の競合を簡単に回避します。
XML スキーマでは、ネームスペース (ターゲット ネームスペースを含む) はスキーマ タグで宣言されます。次は、メタデータのインポート時に作成されたスキーマを使用する例です。
<xsd:schema targetNamespace="http://temp.openuri.org/SampleApp/CustOrder.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:bea="http://www.bea.com/public/schemas"
elementFormDefault="unqualified" attributeFormDefault="unqualified">...
2 行目に、ターゲット ネームスペースが targetNamespace
属性を使用して宣言されています。この場合、ターゲット ネームスペースは 4 行目で宣言されているネームスペースにバインドされます。つまり、このドキュメントで宣言されるすべての要素と属性は下記に属します。
http://www.bea.com/public/schemas
スキーマの 3 行目にはデフォルト ネームスペースが含まれています。これは、明示的なプレフィックスを持たない要素すべてのネームスペースです。
<element name="
appliance"
type="
string"
/>
element
要素は、string
のようなプレフィックスがない型と同様、デフォルト ネームスペースに属しています。
スキーマの 5 行目には、ネームスペース宣言 (bea
) が含まれています。これは、単なる URI とプレフィックスの関連付けです。スキーマ内には任意の数の宣言を指定できます。
このスキーマ ドキュメントで宣言される型の参照にはプレフィックスを付ける必要があります。次に例を示します。
<complexType name="AddressType">
<sequence>
<element name="street_address" type="string"/>
...
</sequence>
</complexType>
<element name="address" type="bea:AddressType"/>
スキーマを作成するときには、elementFormDefault="unqualified"
および attributeFormDefault="unqualified"
を指定することをお勧めします。これにより、要素ごとに明示的にマップする必要なく、複雑な要素の名前を 1 つ変更することで、ネームスペースの名前を変更できます。
AquaLogic Data Services Platform (AquaLogic Data Services Platform) は、クエリの生成時にネームスペース宣言を自動的に生成します。Liquid Data は、ns0、ns1、ns2 などのラベルを使用したシンプルなスキームを採用しています。割り当てたネームスペース名は簡単に変更できますが、その特定のネームスペースの使用個所すべてが必ず変更されるように注意を払う必要があります。
戻り値の型を作成すると、その型はデフォルトで qualified
となります。つまり、複雑な要素のネームスペースがスキーマに含まれるということです。
この要素と属性を修飾する場合、WebLogic Workshop の外部でエディタを使用してスキーマを修正し、attributeFormDefault
と elementFormDefault
の一方または両方を qualified に設定する必要があります。