Esta sección describe cómo se correlacionan las estructuras
XSD con las estructuras PL/I en el escenario de WSDL2PLI.
Generalmente, una estructura principal PL/I (nivel 01) se crea para contener todas las
estructuras secundarias, variables elementales y matrices PL/I correspondientes a
elementos y atributos XML en un XSD de origen.
Con algunas excepciones, la jerarquía de las estructuras principales y secundarias de
PL/I generadas a partir del XSD coincidirá con la de XSD.
Las correlaciones de este tema utilizan las siguientes definiciones de funciones de
pseudocódigo:
- depth(): esta función devuelve la profundidad jerárquica de un elemento o
atributo XSD.
pli_name(): esta función devuelve un identificador exclusivo PL/I derivado
de un nombre de elemento o
atributo XSD. La exclusividad se determina utilizando la vía de acceso completa
del
identificador. (Consulte la sección
Creación de identificadores de PL/I.)
pli_type(): esta función devuelve una declaración de datos PL/I derivada
de una definición de tipo simple XSD. Para tipos definidos por usuario, la derivación se
realiza utilizando el tipo simple base incorporado o derivado. (Consulte la sección
Estructuras Enterprise PL/I del escenario WSDL2PLI.)
Correlación de elementos XML elementales
Un
elemento XML elemental es aquel que no contiene otros elementos, aunque puede tener
atributos y contener caracteres.
Esta correlación muestra el caso simple:
Tabla 1. Elementos XML elementales con tipos simples incorporados o derivados| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName” type=”simpleTypeName”
/> |
| PL/I |
depth(xsd:element) pli_name(eleName) pli_type(simpleTypeName) |
Un elemento XML elemental opcional contiene "minOccurs=0" y "maxOccurs=1":
Tabla 2. Elementos XML elementales opcionales| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName” type=”simpleTypeName”
minOccurs=”0” maxOccurs=”1” /> |
| PL/I |
depth(xsd:element) (pli_name(eleName) + ”_bit1”) BIT(1) ALIGNED,
depth(xsd:element) pli_name(eleName) pli_type(simpleTypeName)
|
| 1Consulte la sección
Sufijos añadidos a identificadores de PL/I. |
Un elemento XML elemental repetitivo se correlaciona con una matriz:
Tabla 3. Elementos XML elementales repetitivos (matrices)| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName” type=”simpleTypeName”
minOccurs=”m” maxOccurs=”n” /> |
| PL/I |
Una de las siguientes: - [ depth(xsd:element) (pli_name(eleName) + ”_lim1”) SIGNED FIXED BINARY(31), ]2
- [ depth(xsd:element) (pli_name(eleName) + ”_cnt1”) SIGNED FIXED BINARY(31), ]3
- [ depth(xsd:element) pli_name(eleName) (n) pli_type(simpleTypeName), ]4 o
- [ depth(xsd:element) pli_name(eleName) (_ref._lim1 REFER _lim1) pli_type(simpleTypeName) ]5
|
1Consulte la sección
Sufijos añadidos a identificadores de PL/I.
2Se genera cuando maxOccurs > element_max_occurs_limit o
maxOccurs=”unbounded”.
3Se genera cuando minOccurs != maxOccurs y maxOccurs) > 1.
4Se genera cuando maxOccurs <= element_max_occurs_limit.
5Se genera cuando maxOccurs) > element_max_occurs_limit o maxOccurs=”unbounded”.
|
Un elemento XML elemental puede contener caracteres y atributos:
Tabla 4. Elementos XML elementales con contenido de caracteres y atributos| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName” type=”complexTypeName” />
<xsd:complexType name=”complexTypeName”>
<xsd:simpleContent>
<xsd:extension base=”simpleTypeName1”>
<xsd:attribute name=”attName” type=”simpleTypeName2” />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
|
| PL/I |
depth(xsd:element) pli_name(eleName) ,
(depth(xsd:element) + 1) pli_name(“text”) pli_type(simpleTypeName1),
(depth(xsd:element) + 1) (pli_name(attName) + “_bit1”) BIT(1) ALIGNED,
(depth(xsd:element) + 1) (pli_name(attName) + “_att1”) pli_type(simpleTypeName2)
|
| 1Consulte la sección
Sufijos añadidos a identificadores de PL/I. |
Correlación de elementos XML compuestos
Un
elemento XML compuesto es aquel que puede contener otros elementos XML elementales o
compuestos y atributos XML.
Esta correlación muestra el caso simple:
Tabla 5. Elementos XML compuestos con contenido de elementos elementales y
atributos| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName1” type=”complexTypeName” />
<xsd:complexType name=”complexTypeName” mixed=”false”>
<xsd:sequence o all>
<xsd:element name=”eleName2” type=”simpleTypeName1” />
</xsd:sequence o all>
<xsd:attribute name=”attName1” type=”simpleTypeName2” use=”optional”/>
</xsd:complexType>
|
| PL/I |
depth(xsd:element) pli_name(eleName1) ,
(depth(xsd:element) + 1) pli_name(eleName2) pli_type(simpleTypeName1),
(depth(xsd:element) + 1) pli_name(attName1 + ”_bit1”)) BIT(1) ALIGNED,
(depth(xsd:element) + 1) pli_name(attName1 + ”_att1”) pli_type(simpleTypeName2)
|
| 1Consulte la sección
Sufijos añadidos a identificadores de PL/I. |
Un elemento XML compuesto opcional contiene "minOccurs=0" y "maxOccurs=1":
Tabla 6. Elementos XML compuestos opcionales | Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName1” type=”complexTypeName” minOccurs=”0” maxOccurs=”1”/>
<xsd:complexType name=”complexTypeName” >
<xsd:sequence o all>
<xsd:element name=”eleName2” type=”simpleTypeName” />
</xsd:sequence o all>
</xsd:complexType>
|
| PL/I |
depth(xsd:element) pli_name(eleName1 + “_bit1”),
depth(xsd:element) pli_name(eleName1),
(depth(xsd:element) + 1) pli_name(eleName2) pli_type(simpleTypeName)
|
| 1Consulte la sección
Sufijos añadidos a identificadores de PL/I. |
Un elemento XML compuesto repetitivo se correlaciona con una matriz:
Tabla 7. Elementos XML compuestos repetitivos (matrices)| Lenguaje: |
Declaración: |
| XSD |
<xsd:element name=”eleName1” type=”complexTypeName” minOccurs=”m”
maxOccurs=”n”/>
<xsd:complexType name=”complexTypeName” mixed=”false”>
<xsd:sequence o all>
<xsd:element name=”eleName2” type=”simpleTypeName” minOccurs=”3” maxOccurs=”3” />
</xsd:sequence o all>
</xsd:complexType>
|
| PL/I |
Una de las siguientes: - [ depth(xsd:element) pli_name(eleName1 + “_lim1”) SIGNED FIXED BINARY(31), ]2
- [ depth(xsd:element) pli_name(eleName1 + “_cnt1”) SIGNED FIXED BINARY(31), ]3
- [ depth(xsd:element) pli_name(eleName1) (n), ]4 o
- [ depth(xsd:element) pli_name(eleName1) (_ref._lim1 REFER _lim1) ]5
- depth(xsd:element) pli_name(eleName2) (3) pli_type(simpleTypeName)
|
1Consulte la sección
Sufijos añadidos a identificadores de PL/I.
2Se genera cuando maxOccurs > element_max_occurs_limit o
maxOccurs=”unbounded”.
3Se genera cuando minOccurs != maxOccurs y maxOccurs > 1.
4Se genera cuando maxOccurs <= element_max_occurs_limit.
5Se genera cuando maxOccurs > element_max_occurs_limit o maxOccurs=”unbounded”.
|