Si utiliza el dominio DataObject con CORBA, debe saber cuál es la correspondencia entre el esquema XML y los tipos ESQL y los tipos del archivo IDL.
IDL | esquema 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);
};
A continuación se muestra un esquema XML de ejemplo: <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>
A continuación se muestra un ejemplo
de 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);
};
A continuación se muestra un esquema XML de ejemplo: <xsd:complexType name="longSeq">
<xsd:sequence>
<xsd:element name="item" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
</xsd:sequence>
</xsd.complexType>
Una secuencia puede estar enlazada con la
secuencia de sintaxis <long, 10>, que coloca un enlace en el archivo
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>
A continuación se muestra un ejemplo
de 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
El siguiente ejemplo muestra un módulo en un archivo IDL.Module one {
Interface OneAInterface {
};
};
El nombre completo de la interfaz denominada OneAInterface
es one.OneAInterface. En un archivo IDL, los módulos pueden anidarse en otros módulos. En este caso, el nombre completo de la interfaz puede incluir más de un nombre de módulo, a partir del módulo raíz; por ejemplo:
ModuleNameA.ModuleNameB.InterfaceName.OperationName
Un archivo IDL puede contener más de una operación con el mismo nombre siempre y cuando las operaciones estén en módulos diferentes.