Wenn Sie die DataObject-Domäne zusammen mit CORBA verwenden, müssen Sie wissen, wie XML-Schema und ESQL-Typen den Typen in der IDL-Datei entsprechen.
IDL | XML-Schema | 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);
};
Nachfolgend finden Sie ein Beispiel für ein XML-Schema:<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>
Hier ein XML-Beispiel:<example.myoperation>
<input1>A</input1>
</example.myoperation>
Typedef long myLong;
typedef sequence<long> longSeq;
interface example {
void myoperation(in longSeq input1, inout myLong input2);
};
Nachfolgend finden Sie ein Beispiel für ein XML-Schema:<xsd:complexType name="longSeq">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
</xsd:sequence>
</xsd.complexType>
Eine Sequenz kann mit der Syntaxsequenz <long, 10> gebunden werden, in die XSD-Datei wird dann eine Bindung integriert<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>
Hier ein XML-Beispiel:<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>
Modulname.Schnittstellenname.Operationsname
Das folgende Beispiel zeigt ein Modul in einer IDL-Datei:Module one {
Interface OneAInterface {
};
};
Der vollständig qualifizierte Name der Schnittstelle 'OneAInterface' lautet one.OneAInterface. Die Module in einer IDL-Datei können in anderen Modulen verschachtelt sein. In diesem Fall kann der vollständig qualifizierte Name der Schnittstelle mehrere Modulnamen (beginnend vom Stammmodul) enthalten. Beispiel:ModulnameA.ModulnameB.Schnittstellenname.Operationsname
Eine IDL-Datei kann mehrere Operationen mit gleichen Namen enthalten, solange sich die Operationen in verschiedenen Modulen befinden.