XMLNAMESPACES 宣言
XMLNAMESPACES 宣言は、引数からネーム・スペース宣言を構成します。
Notes:
- 1 DEFAULT or NO DEFAULT can only be specified once in arguments of XMLNAMESPACES.
スキーマは SYSIBM です。 宣言名を修飾名で指定することはできません。
この宣言は、XMLELEMENT、XMLFOREST、XMLTABLE などの特定の関数の引数としてのみ使用できます。 結果は、NULL 以外の入力値のそれぞれの有効範囲内ネーム・スペースが入っている、1 つ以上の XML ネーム・スペース宣言です。
- 名前空間-URI
- SQL 文字ストリング定数に、名前空間の URI を指定します。 namespace-prefix と併せて使用する場合には、この文字ストリング定数を空にしてはなりません (SQLSTATE 42815)。 名前空間接頭部
- 名前空間の接頭部を指定します。 この接頭部は SQL ID であり、XML NCName の形式でなければなりません (SQLSTATE 42634)。 有効な名前の詳細については、 W3C XML namespace specifications を参照してください。 接頭部を
xml
やxmlns
にすることはできません。また、接頭部は名前空間宣言のリスト内で固有でなければなりません (SQLSTATE 42635)。 - デフォルトの namespace-uri
- 使用するデフォルトの名前空間を、この名前空間宣言の有効範囲内で指定します。 namespace-uri はネストされる有効範囲内の別の DEFAULT 宣言または NO DEFAULT 宣言によってオーバーライドされなければ、有効範囲内の非修飾名に適用されます。
- NO DEFAULT
- この名前空間宣言の有効範囲内のデフォルトの名前空間が使用されないことを指定します。 ネストされる有効範囲内の DEFAULT 宣言によってオーバーライドされなければ、有効範囲内のデフォルトの名前空間はありません。
結果のデータ・タイプは XML です。 結果は、各指定名前空間の XML 名前空間宣言となります。 結果が NULL 値になることはありません。
例
注: XMLNAMESPACES は、出力にブランク・スペースや改行文字を挿入しません。 例の出力はすべて、読みやすくするために書式を整えています。
- 例 1: adm:employee という名前の XML エレメントと、
XML 属性 adm:department を生成します。このどちらにも、
adm を接頭部として持つ名前空間が関連付けられます。
この照会は、次のような結果を生成します。SELECT EMPNO, XMLELEMENT( NAME "adm:employee", XMLNAMESPACES( 'http://www.adm.com' AS "adm" ), XMLATTRIBUTES( WORKDEPT AS "adm:department" ), LASTNAME ) FROM EMPLOYEE WHERE JOB = 'ANALYST'
000130 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> QUINTANA</adm:employee> 000140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> NICHOLLS</adm:employee> 200140 <adm:employee xmlns:adm="http://www.adm.com" adm:department="C01"> NATZ</adm:employee>
- 例 2:デフォルトの名前空間に関連付けられた「employee」という名前の XML エレメントと、
デフォルトの名前空間を使用するサブエレメント「department」を持ったデフォルトの名前空間を使用しない「job」という名前のサブエレメントを作成します。
この照会は、次のような結果を生成します。SELECT EMP.EMPNO, XMLELEMENT( NAME "employee", XMLNAMESPACES( DEFAULT 'http://hr.org' ), EMP.LASTNAME, XMLELEMENT( NAME "job", XMLNAMESPACES( NO DEFAULT ), EMP.JOB, XMLELEMENT( NAME "department", XMLNAMESPACES( DEFAULT 'http://adm.org' ), EMP.WORKDEPT ) ) ) FROM EMPLOYEE EMP WHERE EMP.EDLEVEL = 12
000290 <employee xmlns="http://hr.org">PARKER<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee> 000310 <employee xmlns="http://hr.org">SETRIGHT<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee> 200310 <employee xmlns="http://hr.org">SPRINGER<job xmlns="">OPERATOR <department xmlns="http://adm.org">E11</department></job></employee>