XMLNAMESPACES スカラー関数

XMLNAMESPACES 関数は、引数からネーム・スペース宣言を構成します。 この関数は、XMLELEMENT 関数および XMLFOREST 関数などの特定の関数の引数としてのみ使用できます。

構文図を読むビジュアルシンタックスダイアグラムをスキップするXMLNAMESPACES(,namespace-uriASNAMESPACE-PREFIXDEFAULTnamespace-uriNO DEFAULT1)
注:
  • 1 DEFAULTまたはNO DEFAULT節は1回のみ指定できます。

スキーマは SYSIBM です。

結果は、NULL 以外の入力値のそれぞれの有効範囲内ネーム・スペースが入っている、1 つ以上の XML ネーム・スペース宣言です。

名前空間URI
ネーム・スペース名または URI を含む、SQL 文字ストリング定数を指定します。 namespace-prefix と一緒に使用する場合、文字ストリング定数は空ストリングであってはなりません。 namespace-uri には、http://www.w3.org/XML/1998/namespace または http://www.w3.org/2000/xmlns/ であってはなりません。
AS ネームスペース接頭辞
名前空間の接頭部を指定します。 接頭部は XML NCName 形式の SQL ID でなければなりません。 接頭部には「xml」または「xmlns」は使用できません。 接頭部はネーム・スペース宣言のリスト内で固有でなければなりません。

ネーム・スペース接頭部「xml」、「xs」、「xsd」、「xsi」、および「sqlxml」は、SQL/XML 内で事前定義されています。 これらのバインディングは次のとおりです。

  • xmlns:xml = "http://www.w3.org/XML/1998/namespace"
  • xmlns:xs = "http://www.w3.org/2001/XMLSchema"
  • xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
  • xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  • xmlns:sqlxml= "http://standards.iso.org/iso/9075/2003/sqlxml"
DEFAULT namespace-uri または NO DEFAULT
このネーム・スペース宣言の有効範囲内でデフォルトのネーム・スペースを使用するかどうかを指定します。

このネーム・スペース宣言の有効範囲は、指定された XML エレメントと、指定された XML エレメントに含まれるすべての XML 式です。

DEFAULT namespace-uri
使用するデフォルトの名前空間を、この名前空間宣言の有効範囲内で指定します。 namespace-uri は、有効範囲内の非修飾名に適用されます。ただし、別の DEFAULT 宣言または NO DEFAULT 宣言によって、ネストされた有効範囲の中でオーバーライドされる場合は、その限りではありません。

namespace-uri は、ネーム・スペース名または URI を含む、SQL 文字ストリング定数を指定します。 文字ストリング定数は、DEFAULT 文節のコンテキスト内では空ストリングであってもかまいません。

NO DEFAULT
この名前空間宣言の有効範囲内のデフォルトの名前空間が使用されないことを指定します。 NO DEFAULT 文節がネストされた有効範囲内の DEFAULT 宣言によってオーバーライドされない限り、この有効範囲にはデフォルトのネーム・スペースはありません。

この関数の結果の XML 値は、指定された各ネーム・スペースの XML ネーム・スペース宣言が入っている、XML シーケンスです。 結果が NULL 値になることはありません。

例 1: それぞれの従業員ごとに「employee」エレメントを生成します。 employee エレメントは、XML ネーム・スペース「urn:bo」に関連付けられ、このネーム・スペースは接頭部「bo」にバインドされます。 このエレメントには、名前と hiredate サブエレメントの属性が含まれています。
SELECT e.empno, XMLSERIALIZE(XMLELEMENT(NAME "bo:employee",
                   XMLNAMESPACES('urn:bo' as "bo"),
                   XMLATTRIBUTES(e.lastname, e.firstnme),
                   XMLELEMENT(NAME "bo:hiredate", e.hiredate)) AS CLOB(50))
   FROM employee e where e.edlevel = 12;
照会の結果は、次の結果に類似したものになります。
00029 <bo:employee xmlns:bo="urn:bo" LASTNAME="PARKER" FIRSTNME="JOHN">
      <bo:hiredate>198-5-3</bo:hiredate>
      </bo:employee>
00031 <bo:employee xmlns:bo="urn:bo" LASTNAME="SETRIGHT"
      FIRSTNME="MAUDE">
      <bo:hiredate>1964-9-12</bo:hiredate>
      </bo:employee>
例 2: それぞれの従業員ごとに、XMLFOREST を使用して 2 つのエレメントを生成します。 最初の「lastname」エレメントはデフォルト・ネーム・スペース「http://hr.org」に関連付けられ、2 番目の「job」エレメントは、接頭部「d」にバインドされた XML ネーム・スペース「http://fed.gov」に関連付けられます。
SELECT empno, XMLSERIALIZE(XMLFOREST(
          XMLNAMESPACES(DEFAULT 'http://hr.org', 'http://fed.gov' AS "d"),
         lastname, job AS "d:job") AS CLOB(50))
FROM employee where edlevel = 12;
照会の結果は、次の結果に類似したものになります。
00029 <LASTNAME xmlns="http://hr.org" xmlns:d="http://fed.gov">PARKER
      </LASTNAME>
      <d:job xmlns="http://hr.org" xmlns:d="http://fed.gov">
      OPERATOR</d:job>
00031 <LASTNAME xmlns="http://hr.org" xmlns:d="http://fed.gov">
      SETRIGHT</LASTNAME>
      <d:job xmlns="http://hr.org" xmlns:d="http://fed.gov">
      OPERATOR</d:job>