DataObject ドメインを CORBA と共に使用するときは、XML スキーマおよび ESQL タイプが IDL ファイル内のタイプとどのように対応しているかを知る必要があります。
IDL | XML スキーマ | ESQL |
---|---|---|
boolean | xsd:boolean | BOOLEAN |
char | <xsd:simpleType name="char"> |
CHARACTER |
wchar | <xsd:simpleType name= “wchar”> |
CHARACTER |
double | xsd:double | FLOAT |
float | xsd:float | FLOAT |
octet | xsd:unsignedByte | INTEGER |
long | xsd:int | INTEGER |
Long long | xsd:long | INTEGER |
short | xsd:short | INTEGER |
string | xsd:string | CHARACTER |
wstring | xsd:string | CHARACTER |
Unsigned short | xsd:unsignedShort | INTEGER |
Unsigned long | xsd:unsignedInt | INTEGER |
Unsigned long long | xsd:unsignedLong | DECIMAL |
enum myEnum {A, B, C};
interface example {
void myoperation(in myEnum input1);
};
以下に示すのは、XML スキーマの例です。<xsd:simpleType name=”myEnum”>
<xsd:restriction base=”xsd:string”>
<xsd:enumeration value=”A”/>
<xsd:enumeration value=”B”/>
<xsd:enumeration value=”C”/>
</xsd:restriction>
</xsd:simpleType>
以下に示すのは、XML の例です。<example.myoperation>
<input1>A</input1>
</example.myoperation>
Typedef long myLong;
typedef sequence<long> longSeq;
interface example {
void myoperation(in longSeq input1, inout myLong input2);
};
以下に示すのは、XML スキーマの例です。<xsd:complexType name="longSeq">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
</xsd:sequence>
</xsd.complexType>
sequence を sequence<long, 10> という構文とバインドでき、XSD ファイルに結合を配置できます。<example.myoperation>
<input1>
<item>10</item>
<item>11</item>
<item>12</item>
</input1>
</example.myoperation>
struct myStruct {
char c;
string str;
octet o;
short s;
unsigned long long ull;
float f;
double d;
};
interface example {
void myoperation(in myStruct input1);
};
<xsd:complexType name="myStruct">
<xsd:sequence>
<xsd:element name="c" type="xsd:string" maxOccurs="1" minOccurs="1"/>
<xsd:element name="str" type="xsd:string" nillable="true" maxOccurs="1" minOccurs="1"/>
<xsd:element name="o" type="xsd:byte" maxOccurs="1" minOccurs="1"/>
<xsd:element name="s" type="xsd:short" maxOccurs="1" minOccurs="1"/>
<xsd:element name="ull" type="xsd:unsignedLong" maxOccurs="1" minOccurs="1"/>
<xsd:element name="f" type="xsd:float" maxOccurs="1" minOccurs="1"/>
<xsd:element name="d" type="xsd:double" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
以下に示すのは、XML の例です。<example.myoperation>
<input1>
<c>c</c>
<str>hello</str>
<o>12</o>
<s>10</s>
<ull>110</ull>
<f>12.0</f>
<d>12.1</d>
</input1>
</example.myoperation>
ModuleName.InterfaceName.OperationName
以下の例は、IDL ファイル内のモジュールを示しています。Module one {
Interface OneAInterface {
};
};
OneAInterface というインターフェースの完全修飾名は、one.OneAInterface です。 IDL ファイルの中では、モジュールを他のモジュール内にネストすることができます。 その場合、インターフェースの完全修飾名には、ルート・モジュールから始まって、複数のモジュール名を含めることができます。例を挙げます。ModuleNameA.ModuleNameB.InterfaceName.OperationName
IDL ファイルには、同じ名前の複数の操作を含めることができます。ただし、それらの操作が異なるモジュールの中にあることが必要です。