Zuordnung von XML-Schemadefinitionen zu SDO-Typen

Jeder XML-Schematyp ist einem SDO-Typ zugeordnet. Verwenden Sie diese Zuordnung, um Code für die Navigation in den Datengraphen der Nachrichten, die von Ihrem Programm vermittelt werden.

Die Version von Service Data Objects (SDO), die von Mediation unterstützt wird, ist Version 1.

XML-Schemata können in WSDL-Abschnitte eingebettet werden, die die Nachrichtenabschnitte und SOAP-Header beschreiben. Die Beschreibung des SOAP-Header ist jedoch wahrscheinlich eher als separates Schema verfügbar. In diesem Fall sollten Sie sie in das SDO-Repository laden, wo sie zur Laufzeit für die Verarbeitung aller Nachrichten, die einen entsprechenden Header haben, verwendet werden kann.

Zuordnung von Schema zu Java-Klassen

Jeder komplexe Typ eines XML-Schemas wird einem SDO-Typ zugeordnet. Ein Element mit einem komplexen Typ wird von einer Instanz eines SDO-Datenobjekts dargestellt. Der Typ enthält eine Eigenschaft für jedes Element, Attribut oder Platzhalterzeichen, das in der Typendefinition des Schemas enthalten ist.

Die Instanz enthält einen Wert für jede Eigenschaft, die definiert wurde. Wenn die Eigenschaft über einen komplexen Typ im Schema zugeordnet wird, ist der Wert ein anderes SDO-Datenobjekt. Wenn die Eigenschaft über einen einfachen Typ aus dem Schema zugeordnet wird, ist der Wert eine Instanz einer Java™-Klasse, wie in der folgenden Tabelle gezeigt wird.

Tabelle 1. Schematypen und entsprechende Java-Klassen. In der ersten Spalte der Tabelle sind die Schematypen aufgelistet. In der zweiten Spalte sind die entsprechenden Java-Klassen aufgelistet. In der dritten Spalte werden Sie auf eine der beide Anmerkungen am Ende der Tabelle für Ihre Referenz verwiesen.
Schematyp Java-Klasse Anmerkungen
anyURI java.lang.String  
base64Binary byte[] Siehe Anmerkung 2
boolean java.lang.Boolean/ boolean Siehe Anmerkung 1
Byte java.lang.Byte / byte Siehe Anmerkung 1
date java.lang.String  
dateTime java.lang.String  
decimal java.math.BigDecimal  
double java.lang.Double / double Siehe Anmerkung 1
duration java.lang.String  
ENTITIES java.util.List  
ENTITY java.lang.String  
float ava.lang.Float / float Siehe Anmerkung 1
gDay java.lang.String  
gMonth java.lang.String  
gMonthDay java.lang.String  
gYear java.lang.String  
gYearMonth java.lang.String  
hexBinary byte[] Siehe Anmerkung 2
ID java.lang.String  
IDREF java.lang.String  
IDREFS java.util.List  
int java.lang.Integer / int Siehe Anmerkung 1
Integer java.math.BigInteger  
language java.lang.String  
long java.lang.Long / long Siehe Anmerkung 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 Siehe Anmerkung 1
String java.lang.String  
time java.lang.String  
token java.lang.String  
unsignedByte java.lang.Short / short Siehe Anmerkung 1
unsignedInt java.lang.Long / long Siehe Anmerkung 1
unsignedLong java.math.BigInteger  
unsignedShort java.lang.Integer / int Siehe Anmerkung 1
Anmerkungen:
  1. SDO konvertiert primitive Typen (int, long usw.) bei Bedarf automatisch in Objekte. Sie können also eine Mischung aus den speziellen Methoden (getInt, setInt, getLong, setLong) und generischen get- und set-Methoden verwenden.
  2. Da Bytefeldgruppen veränderlich sind, können Sie den Wert aktualisieren, ohne das Datenobjekt zu beeinflussen. Möglicherweise erkennt das Datenobjekt die implizite Aktualisierung jedoch nicht. Wenn Sie mit Bytefeldgruppenwerten arbeiten, müssen Sie die Methode "setBytes()" verwenden, um das Datenobjekt explizit zu aktualisieren.

Mit globalen Elementen und Attributen arbeiten

Bei der Zuordnung eines Schemas zu SDO wird auch ein spezieller SDO-Typ definiert, der gewöhnlich "DocumentRoot" genannt wird. Dieser Typ ist ein Container für alle globalen Elemente und Attribute im Schema. Wenn Sie eine SDO-Eigenschaft für ein globales Element oder Attribut suchen, müssen Sie den Typ "DocumentRoot" und darin dann die entsprechende Eigenschaft suchen.

Das folgende Schema definiert das Layout von Web-Service-Nachrichten. Wenn Sie dieses Schema mit den Informationen im Artikel Zuordnung von SDO-Datengraphen für Web-Service-Nachrichten vergleichen, wird die Zuordnung zwischen Schema und SDO deutlich.

<?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>       

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1113
Dateiname:rjy1113.html