Dans le schéma XML des messages d'entrée et de sortie pour l'opération, le type de données XML natif est mappé à la valeur xsd:anyType.
Si un message XML vers un service Web demande une instruction INSERT ou UPDATE, la balise du paramètre doit contenir un document XML valide.
Les exemples des deux sections ci-après effectuent des opérations dans la table CUSTOMER de la base de données DB2 SAMPLE.
Nom de la colonne | Type de données |
---|---|
CID | BIGINT |
INFO | XML |
HISTORY | XML |
Le schéma XML par défaut ci-après est destiné à une opération reposant sur l'instruction SQL suivante :
INSERT INTO CUSTOMER (CID, INFO, HISTORY)
VALUES (:cid, :info, :history)
Les colonnes INFO et HISTORY contiennent des données XML. Les éléments qui représentent ces colonnes dans le schéma sont indiqués en gras :
<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>
Exemple de requête 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>
Le schéma XML par défaut ci-après est destiné à une opération reposant sur l'instruction SQL suivante :
SELECT CID, INFO, HISTORY
FROM CUSTOMER
Comme dans l'exemple précédent, les colonnes INFO et HISTORY contiennent des données XML. Les éléments qui représentent ces colonnes dans le schéma sont indiqués en gras :
<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>
Exemple de réponse 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>