Notas de release del editor de correlaciones de XML

© Copyright International Business Machines Corporation 2005. Reservados todos los derechos. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Notas de release

1.0 Descripción
2.0 Limitaciones
3.0 Problemas conocidos y soluciones
   3.1 Se muestra una matriz de elementos si minOccurs no es 0 ni 1
   3.2 Se genera XSL incorrecto al definir una correlación constante para una referencia de grupo
   3.3 Se genera XSL incorrecto al realizar una subcorrelación de matriz con una referencia de grupo

1.0 Descripción

Este archivo de notas de release contiene información de última hora acerca de las limitaciones y los problemas conocidos y sus soluciones para el editor de correlaciones de XML de WebSphereR Integration Developer.

2.0 Limitaciones

Ninguna

3.0 Problemas conocidos y soluciones

3.1 Se muestra una matriz de elementos si minOccurs no es 0 ni 1

Si define un elemento con minOccurs NO igual a 0 ó 1 en el esquema XSD, como por ejemplo:

<element maxOccurs="entero_max" minOccurs="entero_min" name="nombreElemento" type="suTipo"/>

donde:

dos o más entradas de nombreElemento se mostrarán en el editor de correlaciones de XML cuando utilice este Esquema XSD como origen o como destino. Si realiza una correlación coincidente del elemento padre a nombreElemento, nombreElemento se correlacionará varias veces lo que puede implicar una correlación no deseable

Solución 1:
correlacione cada entrada de nombreElemento antes de realizar la correlación coincidente desde el elemento padre.

Solución 2:
establezca minOccurs en 0 ó 1.

3.2 Se genera XSL incorrecto al definir una correlación constante para una referencia de grupo

Suponga que tiene un tipo complejo en el Esquema XSD que utiliza una referencia de grupo parecida al ejemplo siguiente:

<complexType name="MyType1">
    <sequence>
      <group ref="xsd1:myType1"/>
    </sequence>
</complexType>

  <group name="myType1">
    <sequence>
      <element name="emplID">
 <simpleType>
          <restriction base="int"/>
        </simpleType>       
      </element>
      <element name="location">      
        <simpleType>
          <restriction base="string">
            <maxLength value="10"/>
          </restriction>
 </simpleType>
      </element>
      <element name="data">       
        <simpleType>
          <restriction base="string">
            <maxLength value="1"/>
          </restriction>
        </simpleType>
      </element>
    </sequence>
  </group>

Si selecciona este esquema XSD como destino en el editor de correlaciones de XML y está intentando correlacionar emplID con un valor constante, el XSL generado a partir esta correlación será incorrecto.

Esta es la solución:

  1. Correlacione primero el elemento (emplID) con el elemento raíz en el árbol origen y utilice Definir función XSLT... para asignar el valor constante.
  2. Correlacione el resto del elemento (location, data) del grupo con los valores deseados.

El XSL generado como resultado será correcto.

3.3 Se genera XSL incorrecto al realizar una subcorrelación de matriz con una referencia de grupo

Suponga que el esquema 1 tiene el contenido siguiente:

<xsd:complexType name="Raw_Materials_Type">
    <xsd:sequence>
      <xsd:element minOccurs="0" name="materialid" type="xsd:int"/>
      <xsd:element minOccurs="0" name="quantity" type="xsd:int"/>     
    </xsd:sequence>
</xsd:complexType>

<xsd:element maxOccurs="unbounded" minOccurs="1" name="RawMaterials" type="Raw_Materials_Type"/>
     
Y suponga que el esquema 2 tiene el contenido siguiente:

<xsd:element maxOccurs="3" minOccurs="3" name="MaterialDataSet" type="reservedmaterialdataset"/>
<complexType name="reservedmaterialdataset">
    <sequence>
      <group ref="xsd1:reservedmaterialdatasetGroup"/>
    </sequence>
</complexType>
<group name="reservedmaterialdatasetGroup">
    <sequence>
      <element name="matID" type="xsd:int"/>
      <element name="qty" type="xsd:int"/>
    </sequence>
</group>

Si está correlacionando el esquema 1 con el esquema 2 utilizando el editor de correlaciones XML y está intentando crear correlaciones (incluyendo todos los elementos hijo) para Raw_materials por MaterialDataSet, el XSL generado será incorrecto.

Solución 1:
Cambie minOccurs="3" por minOccurs="0" para el esquema 2 y realice la correlación coincidente para estos dos elementos. El XSL generado será correcto.

Solución 2:

  1. Crear correlación de materialid al primer MaterialDataSet/matID
  2. Definir función XSLT... para el primer MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[1]/materialid/text()
  3. Crear correlación de quantity al primer MaterialDataSet/qty
  4. Definir función XSLT... para el primer MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[1]/quantity/text()
  5. Crear correlación de materialid al segundo MaterialDataSet/matID
  6. Definir función XSLT... para el segundo MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[2]/materialid/text()
  7. Crear correlación de quantity al segundo MaterialDataSet/qty
  8. Definir función XSLT... para el segundo MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[2]/quantity/text()
  9. Crear correlación de materialid al tercer MaterialDataSet/matID
  10. Definir función XSLT... para el tercer MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[3]/materialid/text()
  11. Crear correlación de quantity al tercer MaterialDataSet/qty
  12. Definir función XSLT... para el tercer MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[3]/quantity/text()
  13. Guarde la correlación y genere XSL
  14. Abra el archivo XSL y busque una construcción como:
        <xsl:template name="MaterialDataSet">
             <reservedRawMatDataSet>
        ...
        <xsl:template name="MaterialDataSet_1">
             <reservedRawMatDataSet>
        ...
        <xsl:template name="MaterialDataSet_2">
             <reservedRawMatDataSet>
        ...
  15. Busque la línea:
     <xsl:call-template name="MaterialDataSet"/>
  16.  Añada la línea siguiente después:

    <xsl:call-template name="MaterialDataSet_1"/>
    <xsl:call-template name="MaterialDataSet_2"/>

Ahora la plantilla XSL se llama adecuadamente según lo correlacionado en el editor de correlaciones de XML.