Web サービス操作における DB2 ネイティブ XML データ・タイプのサポート

Web サービスでの操作は、ネイティブ XML データ・タイプを使用する DB2® 列を参照することができます。

操作の入出力メッセージ用の XML スキーマでは、ネイティブ XML データ・タイプは xsd:anyType にマップされます。

Web サービスへの XML メッセージが INSERT または UPDATE を要求する場合、パラメーターのタグには有効な XML 文書が含まれている必要があります。

以下の 2 つのセクションの例では、DB2 SAMPLE データベースの CUSTOMER 表に対して操作を実行します。

表 1. CUSTOMER 表の列
列の名前 データ・タイプ
CID BIGINT
INFO XML
HISTORY XML

INSERT ステートメントにおける DB2 ネイティブ XML データ・タイプの使用

以下に挙げるデフォルト XML スキーマは、以下の SQL ステートメントに基づいた操作のためのものです。

INSERT INTO CUSTOMER (CID, INFO, HISTORY)
  VALUES (:cid, :info, :history)

列 INFO および HISTORY には XML データが入っています。 これらの列を表すエレメントは、スキーマ内では太字で強調表示されます。

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:example" xmlns:tns="urn:example">
	<xsd:element name="insertCustomer">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="cid" type="xsd:long" nillable="true"></xsd:element>
				<xsd:element name="info" type="xsd:anyType" nillable="true"></xsd:element>
				<xsd:element name="history" type="xsd:anyType" nillable="true"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="insertCustomerResponse">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="updateCount" type="xsd:int"></xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

SOAP/HTTP 要求は次の例のようになります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:example">
	<soapenv:Body>
		<q0:insertCustomer>
			<cid>123456</cid>
			<info>
				<customerinfo>
					<name>Amir Malik</name>
					<addr country="United States">
						<street>555 Bailey Ave</street>
						<city>San Jose</city>
						<prov-state>California</prov-state>
						<pcode-zip>95141</pcode-zip>
					</addr>
					<phone type="work">408-555-1358</phone>
				</customerinfo>
			</info>
			<history>
				<customerHistory>
					<numberOrders>12</numberOrders>
					<memberSince>1999</memberSince>
				</customerHistory>
			</history>
		</q0:insertCustomer>
	</soapenv:Body>
</soapenv:Envelope>

照会における DB2 ネイティブ XML データ・タイプの使用

以下に挙げるデフォルト XML スキーマは、以下の SQL ステートメントに基づいた操作のためのものです。

SELECT CID, INFO, HISTORY
  FROM CUSTOMER

前述の例と同じように、列 INFO および HISTORY には XML データが入っています。 これらの列を表すエレメントは、スキーマ内では太字で強調表示されます。

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
targetNamespace="urn:example" xmlns:tns="urn:example">
	<xsd:element name="selectCustomer">
		<xsd:complexType></xsd:complexType>
	</xsd:element>
	<xsd:element name="selectCustomerResponse">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element maxOccurs="unbounded" minOccurs="0" name="row">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="CID" type="xsd:long"></xsd:element>
							<xsd:element name="INFO" type="xsd:anyType" nillable="true"></xsd:element>
							<xsd:element name="HISTORY" type="xsd:anyType" nillable="true"></xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

SOAP/HTTP 応答は次の例のようになります。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:example">
	<soapenv:Body>
		<q0:selectCustomerResponse>
			<row>
				<cid>123456</cid>
				<info>
					<customerinfo>
						<name>Amir Malik</name>
						<addr country="United States">
							<street>555 Bailey Ave</street>
							<city>San Jose</city>
							<prov-state>California</prov-state>
							<pcode-zip>95141</pcode-zip>
						</addr>
						<phone type="work">408-555-1358</phone>
					</customerinfo>
				</info>
				<history>
					<customerHistory>
						<numberOrders>12</numberOrders>
						<memberSince>1999</memberSince>
					</customerHistory>
				</history>
			</row>
		</q0:selectCustomerResponse>
	</soapenv:Body>
</soapenv:Envelope>

フィードバック