XML スキーマ定義を SDO タイプ・システムにマッピングする

各 XML スキーマ・タイプは、SDO タイプにマップされます。このマッピングは、プログラムが仲介するメッセージのデータ・グラフをナビゲートするコードの作成に役立てることができます。

メディエーションによってサポートされているサービス・データ・オブジェクト (SDO) のバージョンはバージョン 1 です。

XML スキーマは、メッセージ・パーツおよび SOAP ヘッダーを記述する WSDL セクションに組み込まれている場合があります。ただし、SOAP ヘッダーの記述は、別個のスキーマとして使用される可能性が高いため、SDO リポジトリーにロードしてください。 このリポジトリー内で、ランタイムに突き合わせヘッダーが付いているメッセージを処理する場合、その記述を使用することができます。

Java クラス・マッピングに対するスキーマ

各 XML スキーマ複合タイプは、 SDO タイプにマップされます。これは、複合タイプを持つエレメントは SDO データ・オブジェクトのインスタンスによって表されることになるということを 意味しています。タイプは、スキーマ・タイプ定義に含まれる エレメント、属性またはワイルドカードごとにプロパティーを持っています。

インスタンスは、設定済みの各プロパティーの値を持ちます。 プロパティーがスキーマ複合タイプからマップされた場合、 値は別の SDO データ・オブジェクトになります。プロパティーがスキーマ・シンプル・タイプ からマップされた場合、値は以下のテーブルに示されているように Java™ クラスのインスタンスになります。

表 1. スキーマ・タイプおよび対応する Java クラス. 表の最初の列には、スキーマ・タイプがリストされています。 2 番目の列には、対応する Java クラスがリストされています。 3 番目の列は、表の最後に参照用に示されている 2 つの注のいずれかを指しています。
スキーマ・タイプ Java クラス 注意
anyURI java.lang.String  
base64Binary byte[] 注 2 を参照
ブール値 java.lang.Boolean/ boolean 注 1 を参照
バイト java.lang.Byte / byte 注 1 を参照
date java.lang.String  
dateTime java.lang.String  
decimal java.math.BigDecimal  
double java.lang.Double / double 注 1 を参照
duration java.lang.String  
ENTITIES java.util.List  
ENTITY java.lang.String  
float ava.lang.Float / float 注 1 を参照
gDay java.lang.String  
gMonth java.lang.String  
gMonthDay java.lang.String  
gYear java.lang.String  
gYearMonth java.lang.String  
hexBinary byte[] 注 2 を参照
ID java.lang.String  
IDREF java.lang.String  
IDREFS java.util.List  
int java.lang.Integer / int 注 1 を参照
整数 java.math.BigInteger  
language java.lang.String  
long java.lang.Long / long 注 1 を参照
名前 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 注 1 を参照
ストリング java.lang.String  
time java.lang.String  
トークン (token) java.lang.String  
unsignedByte java.lang.Short / short 注 1 を参照
unsignedInt java.lang.Long / long 注 1 を参照
unsignedLong java.math.BigInteger  
unsignedShort java.lang.Integer / int 注 1 を参照
注意:
  1. SDO は、必要に応じて自動的にプリミティブ (int、long 等) をオブジェクトに変換します。これは、ユーザーが汎用の get および set メソッドのように 特殊なメソッドの混合体 (getInt、setInt、getLong、setLong) を使用することができるということを意味します。
  2. バイト配列が可変の場合、 値をデータ・オブジェクト上に戻さずに更新することができます。しかし、これが起こった場合は、データ・オブジェクトは暗黙の更新を認識していない可能性があります。 バイト配列を使用する場合、通常は setBytes() メソッドを使用してデータ・オブジェクトを 明示的に更新します。

グローバル・エレメントおよび属性の使用

スキーマが SDO にマップされると、一般に「DocumentRoot」と呼ばれる特殊な SDO タイプが定義されます。 このタイプは、スキーマ内のすべてのグローバル・エレメントおよび属性用のコンテナーです。 グローバル・エレメントまたは属性用に SDO プロパティーを配置する必要があるときはいつでも、 「DocumentRoot」タイプを配置してから、適切なプロパティーをそこに配置する必要があります。

次のスキーマは、Web サービス・メッセージのレイアウトを定義しています。このスキーマを Web サービス・メッセージ用の SDO データ・グラフのマッピングにある情報と比較することによって、 活動中の 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>       

トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rjy1113
ファイル名:rjy1113.html