© Copyright International Business Machines Corporation 2005. Tutti i diritti riservati. Limitazioni per gli utenti appartenenti al governo degli Stati Uniti d'America - L'utilizzo, la duplicazione o la divulgazione sono limitati dal supplemento GSA ADP al Contratto con l'IBM Corp.
Questo file di note sul rilascio contiene le informazioni più aggiornate sulle limitazioni e i problemi noti e le relative soluzioni alternative per l'editor di mappatura XML di WebSphereR Integration Developer.
Nessuno
Se si definisce l'elemento con minOccurs NON uguale a 0 o 1 nello schema XSD, simile a quanto segue:
<element maxOccurs="max_integer" minOccurs="min_integer" name="elementName" type="yourType"/>
dove:
- min_integer è uguale o maggiore di due ma uguale o minore di max_integer
- elementName è il nome dell'elemento
- yourType è il tipo di elemento
due o più voci di elementName verranno visualizzate nell'editor di mappatura quando si utilizza questo schema XSD come origine o destinazione. Se si esegue una mappatura corrispondente dall'elemento parent a elementName, elementName verrà mappato più volte, creando mappature non desiderate.
Soluzione alternativa 1:
Mappare ciascuna voce di elementName prima di eseguire la mappatura corrispondente dall'elemento parent.Soluzione alternativa 2:
Impostare minOccurs su 0 o 1.
Si supponga di disporre di un tipo complesso nello schema XSD che utilizza un riferimento di gruppo simile al seguente esempio:
<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>Se si seleziona questo schema XSD come destinazione nell'editor di mappatura XML e si tenta di mappare emplID ad un valore costante, l'XSL generato da questa mappa non sarà corretto.
Di seguito è riportata la soluzione alternativa:
- Mappare l'elemento (emplID) all'elemento root prima nella struttura di origine, quindi utilizzare Definisci la funzione XSLT... per assegnare il valore costante.
- Mappare il resto dell'elemento (posizione, dati) nel gruppo ai valori desiderati.
L'XSL generato come risultato sarà corretto.
Si supponga che lo schema 1 abbia questo contenuto:
<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"/>
E si supponga che lo schema 2 abbia questo contenuto:<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>Se si mappa lo schema 1 allo schema 2 utilizzando l'editor di mappatura XML e si tenta di creare delle mappe (compresi tutti gli elementi child) per: Raw_materials a MaterialDataSet, l'XSL generato non sarà corretto.
Soluzione alternativa 1:
Modificare minOccurs="3" in minOccurs="0" per lo Schema 2, quindi eseguire la mappatura corrispondente per questi due elementi. L'XSL generato sarà corretto.Soluzione alternativa 2:
- Creare una mappatura da materialid al primo MaterialDataSet/matID
- Definire la funzione XSLT... per il primo MaterialDataSet/matID utilizzando l'espressione XPath di /RawMaterials[1]/materialid/text()
- Creare una mappatura dalla quantità al primo MaterialDataSet/qty
- Definire la funzione XSLT... per il primo MaterialDataSet/qty utilizzando l'espressione XPath di /RawMaterials[1]/quantity/text()
- Creare una mappatura da materialid al secondo MaterialDataSet/matID
- Definire la funzione XSLT... per il secondo MaterialDataSet/matID utilizzando l'espressione XPath di /RawMaterials[2]/materialid/text()
- Creare una mappatura dalla quantità al secondo MaterialDataSet/qty
- Definire la funzione XSLT... per il secondo MaterialDataSet/qty utilizzando l'espressione XPath di /RawMaterials[2]/quantity/text()
- Creare una mappatura da materialid al terzo MaterialDataSet/matID
- Definire la funzione XSLT... per il terzo MaterialDataSet/matID utilizzando l'espressione XPath di /RawMaterials[3]/materialid/text()
- Creare una mappatura dalla quantità al terzo MaterialDataSet/qty
- Definire la funzione XSLT... per il terzo MaterialDataSet/qty utilizzando l'espressione XPath di /RawMaterials[3]/quantity/text()
- Salvare la mappa e generare l'XSL
- Aprire il file XSL e ricercare un costrutto come il seguente:
<xsl:template name="MaterialDataSet">
<reservedRawMatDataSet>
...
<xsl:template name="MaterialDataSet_1">
<reservedRawMatDataSet>
...
<xsl:template name="MaterialDataSet_2">
<reservedRawMatDataSet>
...- Ricercare la riga:
<xsl:call-template name="MaterialDataSet"/>- Aggiungere la seguente riga dopo:
<xsl:call-template name="MaterialDataSet_1"/>
<xsl:call-template name="MaterialDataSet_2"/>Ora, la maschera XSL sta per essere richiamata correttamente in base a ciò che è stato mappato nell'editor di mappatura XML.