SQL/XML 発行関数における特殊文字の処理

SQL/XML 公開関数は、SQL 値および ID が XML 値に変換される際に、 一部の特殊文字を置き換えます。

SQL 値における特殊文字の処理

XML 文書では、ある特定の文字は 特殊文字とみなされます。 これらの文字は、そのエンティティー表記を使用してエスケープ形式で 記述する必要があります。 これらの特殊文字は、以下のとおりです。
表 1. 特殊文字とそのエンティティー表記
特殊文字 エンティティーの表記
< &lt;
> &gt;
& &amp;
" &quot; (属性値でのみ)

SQL/XML 公開関数を使用して SQL 値を XML 値として発行する場合、関数は、これらの特殊文字をその事前定義エンティティーに置換します。

SQL ID における特殊文字の処理

SQL 値から XML 値を作成する場合、 SQL ID を XML 修飾名または QName にマップする必要がある場合があります。 ただし、区切り文字で区切られている SQL ID で許可される文字セットは、QName で許可される文字セットとは異なります。 この違いは、SQL ID に有効な一部の文字は QName では無効であるということを意味します。

例えば、区切り文字付き SQL ID の「phone@work」を考えてみます。 @ 文字は QName では有効文字ではないため、文字はエスケープされ、QName は phone_x0040_work になります。

このデフォルトのエスケープ動作は、列名のみに適用されます。 XMLELEMENT で要素名として指定される SQL ID、または XMLFOREST および XMLATTRIBUTES の AS 節で別名として指定される SQL ID の場合、エスケープのデフォルトはありません。 これらの場合には、有効な QName を指定する必要があります。