XMLPARSEは、文字列式を構文解析してDerbyXML値にするSQL/XML演算子です。
この演算子の結果を一時的な値として使うこともできますし、DerbyのXML列に値を格納することもできます。 一時的か永続的かにかかわらず、XMLの値をXMLEXISTSやXMLQUERYのような、他のDerbyXML演算子の入力とすることができます。
XMLPARSE (DOCUMENT 文字列値式 PRESERVE WHITESPACE)
この省略できないキーワードにより、Derbyが構文解析できるXMLの入力のタイプが記述されます。 Derbyが構文解析可能な文字列式は、整形式のXML文書を構成するものに限られます。 これは、DerbyがJAXP構文解析器を使って文字列を構文解析しているからです。 JAXP構文解析器は、文字列値式が整形式のXML文書を構成することを期待します。 もし文字列が整形式のXML文書を構成しない場合、JAXPはエラーを挙げます。 Derbyはそのエラーを補足して、SQLExceptionとしてエラーを挙げなおします。
整形式のXML文書については、次の仕様を参照してください。http://www.w3.org/TR/REC-xml/#sec-well-formed .
INSERT INTO x_table VALUES
(1,
XMLPARSE(DOCUMENT '
<roster>
<student age="18">AB</student>
<student age="23">BC</student>
<student>NOAGE</student>
</roster>'
PRESERVE WHITESPACE)
)
INSERT INTO x_table VALUES
(2,
XMLPARSE (DOCUMENT CAST (? AS CLOB) PRESERVE WHITESPACE)
)
この文には、setCharacterStream()メソッドや、型変換した対照型に可能なJDBCの他のsetXXXメソッドを使って、値を与える必要があります。DerbyのXML機能が動作するためには、Apache XercesのようなJAXP構文解析器およびApache XalanがJavaのクラスパスに記述されている必要があります。もしどちらかが欠けていると、XMLPARSE演算子を使おうとしたときエラーが発生します。