# XML data type

The XML data type is used for Extensible Markup Language (XML) documents.

XMLデータ型は以下のように使います。

- SQL/XMLに定義された、整形されたXML(DOCUMENT(ANY))の値を記録する。
- 一時的に整形されたXML(DOCUMENT(ANY))の値ではない、XML(SEQUENCE)の値を扱う。

注: XMLデータの値を、取得・更新・問合せ等、何らかの方法で操作するアプリケーションでは、JAXP構文解析器とXalanのクラスをクラスパスに持たなければなりません。もし、構文解析器・Xalanの何れかが見つからなければ、Derbyはエラーを発行します。

DerbyではJDBCにて、SQL/XMLを扱う機能が実装されていないので、XMLの値を直接バインドしたり、JDBCの結果セットから直接XMLの値を取得することは不可能です。 その代わりに、XMLPARSEやXMLSERIALIZE等の適切なXMLの演算子を明示的にSQLに書いて、XMLの情報をJavaの文字列や文字のストリームとして、バインドしたり取得する必要があります。

#### 構文

    XML

#### 対応するコンパイル時のJavaの型

無し

XMLの値に対応するJavaの型のjava.sql.SQLXMLは存在します。しかし、java.sql.SQLXML型はDerbyにてサポートされていません。

#### JDBC メタデータ型 (java.sql.Types)

無し

XMLの値に対応するメタデータ型のSQLXMLは存在します。しかし、SQLXMLはDerbyにてサポートされていません。

DerbyのデータベースからXMLの値を取得するときには、問合せのSQLにてXMLSERIALIZE演算子を使ってください。 例を挙げます。

    SELECT XMLSERIALIZE (xcol as CLOB) FROM myXmlTable

こうすることで、直列化した型に対応するgetXXXメソッドを使って、XMLの値を、取得することができます。この例ではCLOB型となります。
DerbyのデータベースにJDBCを使ってXMLの値を記録するときは、SQL文にてXMLPARSE演算子を使ってください。 例を挙げます。

    INSERT INTO myXmlTable(xcol) VALUES XMLPARSE(
        DOCUMENT CAST (? AS CLOB) PRESERVE WHITESPACE)

そして、文字列の型と互換性のあるsetXXXメソッドを使ってください。 この例ではPreparedStatement.setStringまたはPreparedStatement.setCharacterStreamメソッドを使って、演算子に値を与えます。
親トピック: データ型