XMLNAMESPACES
XMLNAMESPACES 宣言は、引数からネーム・スペース宣言を構成します。この宣言は XMLELEMENT 関数と XMLFOREST 関数の引数としてのみ使用できます。結果は、NULL 以外の入力値のそれぞれの有効範囲内ネーム・スペースが入っている、1 つ以上の XML ネーム・スペース宣言です。
.-,---------------------------------------. V | >>-XMLNAMESPACES--(----+-namespace-uri--AS--namespace-prefix-+-+--)->< | (1) | '-----+-DEFAULT--namespace-uri-+------' '-NO DEFAULT-------------'
注:
- 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>