Mappage des définitions de schéma XML au système de type SDO

Chaque type de schéma XML est mappé à un type SDO. Utilisez ce mappage pour développer le code permettant de parcourir les graphiques de données des messages auxquels votre programme associe des médiations.

La version des objets de données de service (SDO) pris en charge par les médiations est Version 1.

Les schémas XML peuvent être imbriqués dans la section WSDL qui décrit les en-têtes SOAP et parties du message. Toutefois, la description de l'en-tête SOAP risque d'être davantage disponible en tant que schéma séparé ; dans ce cas, vous devez le charger dans le référentiel SDO où il peut être utilisé en phase d'exécution pour traiter tous les messages avec un en-tête correspondant.

Mappage d'un schéma à des classes Java

Chaque type complexe de schéma XML est mappé à un type SDO. Cela signifie qu'un élément contenant un type complexe est représenté par une instance d'un objet de données SDO. Ce type contient une propriété pour chaque élément, attribut ou caractère générique de la définition du type de schéma.

L'instance contient une valeur pour chaque propriété définie. Si la propriété est mappée à partir d'un type de schéma complexe, la valeur correspond à un autre objet de données SDO. Si la propriété est mappée à partir d'un type de schéma simple, la valeur correspond à une instance d'une classe Java™, comme illustré dans le tableau ci-après.

Tableau 1. Types de schémas et classes Java correspondantes. La première colonne du tableau répertorie les types de schémas. La deuxième colonne indique les classes Java correspondantes. La troisième colonne vous renvoie aux deux remarques qui sont indiquées à la fin du tableau pour référence.
Type de schéma Classe Java Remarques
anyURI java.lang.String  
base64Binary byte[] Voir remarque 2
boolean java.lang.Boolean/ boolean Voir remarque 1
byte java.lang.Byte / byte Voir remarque 1
date java.lang.String  
dateTime java.lang.String  
decimal java.math.BigDecimal  
double java.lang.Double / double Voir remarque 1
duration java.lang.String  
ENTITIES java.util.List  
ENTITY java.lang.String  
float ava.lang.Float / float Voir remarque 1
gDay java.lang.String  
gMonth java.lang.String  
gMonthDay java.lang.String  
gYear java.lang.String  
gYearMonth java.lang.String  
hexBinary byte[] Voir remarque 2
ID java.lang.String  
IDREF java.lang.String  
IDREFS java.util.List  
Entier java.lang.Integer / int Voir remarque 1
integer java.math.BigInteger  
language java.lang.String  
long java.lang.Long / long Voir remarque 1
Name java.lang.String  
NCName java.lang.String  
negativeInteger java.math.BigInteger  
NKTOKENS java.util.List  
NMTOKEN java.lang.String  
nonNegativeInteger java.math.BigInteger  
nonPositiveInteger java.math.BigInteger  
normalisedString java.lang.String  
NOTATION javax.xml.namespace.QName  
positiveInteger java.math.BigInteger  
QName javax.xml.namespace.QName  
short java.lang.Short / short Voir remarque 1
Chaîne java.lang.String  
heure java.lang.String  
jeton java.lang.String  
unsignedByte java.lang.Short / short Voir remarque 1
unsignedInt java.lang.Long / long Voir remarque 1
unsignedLong java.math.BigInteger  
unsignedShort java.lang.Integer / int Voir remarque 1
Remarques :
  1. DO convertit automatiquement les primitives (int, long et so on) en objets lorsque cela est nécessaire. Cela signifie que vous pouvez utiliser une combinaison de méthodes spécialisées (getInt, setInt, getLong, setLong), ainsi que les méthodes get et set génériques.
  2. Les tableaux d'octets étant modifiables, vous pouvez mettre à jour la valeur sans avoir à la redéfinir sur l'objet de données. Toutefois, lorsque cela se produit, l'objet de données peut ne pas être conscient de cette mise à jour implicite. Lorsque vous utilisez des valeurs de tableau d'octets, utilisez toujours la méthode setBytes() pour mettre à jour l'objet de données de manière explicite.

Utilisation d'attributs et d'éléments globaux

Lorsqu'un schéma est mappé à SDO, un type SDO spécial, généralement appelé 'DocumentRoot', est défini. Ce type est un conteneur de tous les attributs et éléments globaux du schéma. Chaque fois que vous devez rechercher une propriété SDO pour un attribut ou un élément global, vous devez rechercher le type ‘DocumentRoot', puis la propriété appropriée à l'intérieur.

Le schéma ci-après définit la structure des messages des services Web. En comparant ce schéma aux informations de Mappage des graphiques de données SDO pour des messages des services Web, vous pouvez voir à l'oeuvre le mappage du schéma à SDO.

<?xml version="1.0"?>
<xsd:schema
    targetNamespace="http://www.ibm.com/ns/2004/05/webservices/messagemodel"
    xmlns:tns="http://www.ibm.com/ns/2004/05/webservices/messagemodel"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

	<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/"/>

    <xsd:element name="Info">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:element name="operationName" nillable="true" type="xsd:string"/>
          <xsd:element name="messageName"   nillable="true" type="xsd:string"/>
          <xsd:element name="messageType"   nillable="true" type="xsd:string"/>
          <xsd:element name="headers"       type="tns:HeaderEntryType"     maxOccurs="unbounded"/>
          <xsd:element name="attachments"   type="tns:AttachmentEntryType" maxOccurs="unbounded"/>
          <xsd:element name="body"          type="tns:BodyType"/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>

    <xsd:complexType name="BodyType" abstract="true"/>

    <xsd:complexType name="HeaderEntryType" abstract="true"/>

    <xsd:complexType name="AttachmentEntryType" abstract="true"/>

    <xsd:complexType name="SOAPFaultBody">
      <xsd:complexContent>
        <xsd:extension base="tns:BodyType">
          <xsd:sequence>
            <xsd:element name="faultcode" type="xsd:QName"/>
            <xsd:element name="faultstring" type="xsd:string"/>
            <xsd:element name="faultactor" type="xsd:anyURI" minOccurs="0"/>
            <xsd:element name="detail" type="soap:detail" minOccurs="0"/> 
				</xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
    
    <xsd:complexType name="SOAP_1_1_HeaderEntryType">
      <xsd:complexContent>
        <xsd:extension base="tns:HeaderEntryType">
          <xsd:sequence>
            <xsd:element name="mustUnderstand" nillable="true" type="xsd:boolean"/>
            <xsd:element name="actor"          nillable="true" type="xsd:anyURI"/>
            <xsd:any/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
    
    <xsd:complexType name="SOAP_1_1_BoundHeaderEntryType">
      <xsd:complexContent>
        <xsd:extension base="tns:HeaderEntryType">
          <xsd:sequence>
            <xsd:element name="mustUnderstand" nillable="true" type="xsd:boolean"/>
            <xsd:element name="actor"          nillable="true" type="xsd:anyURI"/>
            <xsd:element name="messagePart"    type="xsd:string"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="MIMEAttachmentEntryType">
      <xsd:complexContent>
        <xsd:extension base="tns:AttachmentEntryType">
          <xsd:sequence>
            <xsd:element name="contentType"             type="xsd:string"/>
            <xsd:element name="contentTransferEncoding" type="xsd:string"/>
            <xsd:element name="contentId"               type="xsd:string"/>
            <xsd:element name="data"                    type="xsd:base64Binary"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="BoundMIMEAttachmentEntryType">
      <xsd:complexContent>
        <xsd:extension base="tns:AttachmentEntryType">
          <xsd:sequence>
            <xsd:element name="contentType"             type="xsd:string"/>
            <xsd:element name="contentTransferEncoding" type="xsd:string"/>
            <xsd:element name="contentId"               type="xsd:string"/>
            <xsd:element name="messagePart"             type="xsd:string"/>
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
    
    <xsd:complexType name="UnknownBodyType">
      <xsd:complexContent>
        <xsd:extension base="tns:BodyType">
          <xsd:sequence>
            <xsd:any/>
          </xsd:sequence>
          <xsd:attribute name="encodingStyle" type="xsd:string"/>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>

</xsd:schema>
      

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1113
Nom du fichier : rjy1113.html