© 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.
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.
Ninguna
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:
- entero_min es igual o mayor que dos pero igual o menor que entero_max
- nombreElemento es el nombre del elemento
- suTipo es el tipo del elemento
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.
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:
- 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.
- Correlacione el resto del elemento (location, data) del grupo con los valores deseados.
El XSL generado como resultado será correcto.
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:
- Crear correlación de materialid al primer MaterialDataSet/matID
- Definir función XSLT... para el primer MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[1]/materialid/text()
- Crear correlación de quantity al primer MaterialDataSet/qty
- Definir función XSLT... para el primer MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[1]/quantity/text()
- Crear correlación de materialid al segundo MaterialDataSet/matID
- Definir función XSLT... para el segundo MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[2]/materialid/text()
- Crear correlación de quantity al segundo MaterialDataSet/qty
- Definir función XSLT... para el segundo MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[2]/quantity/text()
- Crear correlación de materialid al tercer MaterialDataSet/matID
- Definir función XSLT... para el tercer MaterialDataSet/matID utilizando la expresión XPath de /RawMaterials[3]/materialid/text()
- Crear correlación de quantity al tercer MaterialDataSet/qty
- Definir función XSLT... para el tercer MaterialDataSet/qty utilizando la expresión XPath de /RawMaterials[3]/quantity/text()
- Guarde la correlación y genere XSL
- 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>
...- Busque la línea:
<xsl:call-template name="MaterialDataSet"/>- 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.