XMLNAMESPACES

XMLNAMESPACES 宣言は、引数からネーム・スペース宣言を構成します。この宣言は XMLELEMENT 関数と XMLFOREST 関数の引数としてのみ使用できます。結果は、NULL 以外の入力値のそれぞれの有効範囲内ネーム・スペースが入っている、1 つ以上の XML ネーム・スペース宣言です。

構文図を読む構文図をスキップする
                     .-,---------------------------------------.      
                     V                                         |      
>>-XMLNAMESPACES--(----+-namespace-uri--AS--namespace-prefix-+-+--)-><
                       |  (1)                                |        
                       '-----+-DEFAULT--namespace-uri-+------'        
                             '-NO DEFAULT-------------'               

注:
  1. DEFAULT 文節または NO DEFAULT 文節は 1 度だけ指定できます。
namespace-uri
ネーム・スペース名または URI を含む、SQL 文字ストリング定数を指定します。namespace-prefix と一緒に使用する場合、文字ストリング定数は空ストリングであってはなりません。
AS namespace-prefix
ネーム・スペース接頭部を指定します。接頭部は XML NCName 形式の SQL ID でなければなりません。有効な名前についての詳細は、W3C XML ネーム・スペースの指定の項目を参照してください。接頭部には「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 になることはありません。

注: XML 処理は、出力の中にブランク・スペースまたは改行文字を挿入しません。読みやすくするために、すべての出力例はフォーマット設定されています。
  • それぞれの従業員ごとに「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(200))
      FROM EMPLOYEE E WHERE E.EDLEVEL = 12

    この照会は下記の結果を生成します。

    00029 <bo:employee xmlns:bo="urn:bo" LASTNAME="PARKER" FIRSTNME="JOHN">
          <bo:hiredate>1988-05-30</bo:hiredate>
          </bo:employee>
    00031 <bo:employee xmlns:bo="urn:bo" LASTNAME="SETRIGHT" FIRSTNME="MAUDE">
          <bo:hiredate>1964-09-12</bo:hiredate>
          </bo:employee>
  • それぞれの従業員ごとに、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(200))
      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>