デフォルトのネームスペースは、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">123</p1:x>', '/p2:x', 1, '<root xmlns:p2="iAnywhere1"/>') WITH ( c1 int '.' ); |
要素を一致させる場合、プレフィクスがバインドされる URI を正確に指定する必要があります。上の例では、xpath クエリの x 名と文書の x 要素は、どちらも iAnywhere1 ネームスペースがあるため、一致となります。
要素を一致させる場合、プレフィクスがバインドされる URI を正確に指定する必要があります。上の例では、xpath クエリの x 名と文書の x 要素は、どちらも iAnywhere1 ネームスペースがあるため、一致となります。xpath 要素 x のプレフィクスは、xml-data 内で x 要素に対して定義されたネームスペースと一致する、namespace-declaration 内で定義されたネームスペース iAnywhere1 を参照します。
OPENXML 演算子の namespace-declaration では、デフォルトのネームスペースを使用しないでください。NULL ネームスペースを含む任意の URI にバインドされる x 要素と一致する、/*:x 形式のワイルドカードクエリを使用してください。または、特定のプレフィクスに必要な URI をバインドし、それをクエリで使用します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |