デフォルトのネームスペースは、xmlns="URI"
の形式の属性で、XML 文書の要素に定義します。次の例では、文書には http://www.iAnywhere.com/EmployeeDemo という URI にバインドされるデフォルトのネームスペースがあります。
<x xmlns="http://www.iAnywhere.com/EmployeeDemo"/> |
要素の名前にプレフィクスがない場合は、その要素およびその要素のすべての子孫要素にデフォルトのネームスペースが適用されます。コロンによって、プレフィクスと残りの要素名は区切られます。たとえば、<x/> にはプレフィクスがないが、<p:x/> にはプレフィクス
p があります。xmlns:prefix="URI"
の形式の属性によって、プレフィクスにバインドされるネームスペースを定義します。次の例では、文書がプレフィクス p を前述の例と同じ URI にバインドします。
<x xmlns:p="http://www.iAnywhere.com/EmployeeDemo"/> |
デフォルトのネームスペースが属性に適用されることはありません。プレフィクスがある場合を除き、属性は常に NULL ネームスペース URI にバインドされます。次の例では、ルート要素と子要素には iAnywhere1 ネームスペースがあり、x 属性には NULL ネームスペース URI、y 要素には iAnywhere2 ネームスペースがあります。
<root xmlns="iAnywhere1" xmlns:p="iAnywhere2"> <child x='1' p:y='2' /> </root> |
XML 文書を、openxml クエリの namespace-declaration 引数として渡すと、文書のルート要素に定義されたネームスペースはクエリに適用されます。ルート要素以降の残りの文書はすべて無視されます。次の例では、p1 は文書では iAnywhere1 にバインドされ、namespace-declaration 引数では p2 にバインドされます。クエリはプレフィクス p2 を使用できます。
SELECT * FROM openxml( '<p1:x xmlns:p1="iAnywhere1"> 1 </x>', '/p2:x', 1, '<root xmlns:p2="iAnywhere1"/>' ) WITH ( c1 int '.' ); |
要素を一致させる場合、プレフィクスがバインドされる URI を正確に指定する必要があります。上の例では、xpath クエリの x 名 と文書の x 要素は、どちらも iAnywhere1 ネームスペースがあるため、一致となります。
openxml システム・プロシージャの namespace-declaration では、デフォルトのネームスペースを使用しないでください。NULL ネームスペースを含む任意の URI にバインドされる x 要素と一致する、/*:x 形式のワイルドカード・クエリを使用してください。または、特定のプレフィクスに必要な URI をバインドし、それをクエリで使用します。XML 文書から結果セットを生成する方法の詳細については、openxml システム・プロシージャを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |