© Copyright International Business Machines Corporation 2005. Alle Rechte vorbehalten.
Diese Datei mit Release-Informationen enthält aktuelle Informationen zu Einschränkungen, Problemen und Strategien zur Behebung von Problemen für den XML-Zuordnungseditor von WebSphereR Integration Developer:
Keine
Wenn Sie Ihr Element mit minOccurs UNGLEICH 0 oder 1 in Ihrem XSD-Schema definieren, also in etwa wie folgt:
<element maxOccurs="max_integer" minOccurs="min_integer" name="elementName" type="yourType"/>
wobei:
- min_integer größer gleich zwei oder kleiner als max_integer ist
- elementName der Name des Elements ist
- yourType der Typ des Elements ist
dann werden zwei oder mehr Einträge mit elementName im XML-Zuordnungseditor angezeigt, wenn Sie dieses XSD-Schema als Quelle oder als Ziel verwenden. Wenn Sie einen Zuordnungsabgleich vom übergeordneten Element mit elementName ausführen, wird elementName mehrfach zugeordnet. Dies kann zu unerwünschten Zuordnungen führen.
Problemumgehung 1:
Ordnen Sie jeden Eintrag von elementName zu, bevor Sie einen Zuordnungsabgleich vom übergeordneten Element ausführen.Problemumgehung 2:
Legen Sie für minOccurs 0 oder 1 fest.
Angenommen, Sie verfügen über einen komplexen Typ in Ihrem XSD-Schema, der den Gruppenverweis ähnlich wie in dem folgenden Beispiel verwendet:
<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>Wenn Sie dieses XSD-Schema als Ziel im XML-Zuordnungseditor verwenden und versuchen, emplID einem konstanten Wert zuzuordnen, dann wird die von dieser Zuordnung generierte XSL falsch sein.
Hier folgt die Problemumgehung:
- Ordnen Sie das Element (emplID) dem Stammelement in der Quellenbaumstruktur zuerst zu und verwenden Sie die Option zum Definieren der XSLT-Funktion..., um den konstanten Wert zuzuordnen.
- Ordnen Sie die restlichen Elemente (Position (location), Daten (data)) in der Gruppe den gewünschten Werten zu.
Die als Ergebnis generierte XSL wird richtig sein.
Angenommen Schema 1 hat folgenden Inhalt:
<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"/>
Und angenommen Schema 2 hat folgenden Inhalt:<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>Wenn Sie Schema 1 mit Hilfe des XML-Zuordnungseditors zu Schema 2 zuordnen und versuchen, Zuordnungen (einschließlich aller untergeordneter Elemente) für Raw_materials to MaterialDataSet zu erstellen, dann wird die generierte XSL falsch sein.
Problemumgehung 1:
Ändern Sie minOccurs="3" in minOccurs="0" für Schema 2 und führen Sie einen Zuordnungsabgleich für diese beiden Elemente aus. Die generierte XSL wird richtig sein.Problemumgehung 2:
- Zuordnung erstellen von materialid zu der ersten MaterialDataSet/matID
- Definieren der XSLT-Funktion... für die erste MaterialDataSet/matID mit Hilfe von XPath Expression von /RawMaterials[1]/materialid/text()
- Zuordnung erstellen von der Menge (quantity) zur ersten MaterialDataSet/qty
- Definieren der XSLT-Funktion... für die erste MaterialDataSet/qty mit Hilfe von XPath Expression von /RawMaterials[1]/quantity/text()
- Zuordnung erstellen von materialid zur zweiten MaterialDataSet/matID
- Definieren der XSLT-Funktion... für die zweite MaterialDataSet/matID mit Hilfe von XPath Expression von /RawMaterials[2]/materialid/text()
- Zuordnung erstellen von der Menge (quantity) zur zweiten MaterialDataSet/qty
- Definieren der XSLT-Funktion... für die zweite MaterialDataSet/qty mit Hilfe von XPath Expression von /RawMaterials[2]/quantity/text()
- Zuordnung erstellen von materialid zur dritten MaterialDataSet/matID
- Definieren der XSLT-Funktion... für die dritte MaterialDataSet/matID mit Hilfe von XPath Expression von /RawMaterials[3]/materialid/text()
- Zuordnung erstellen von der Menge (quantity) zur dritten MaterialDataSet/qty
- Definieren der XSLT-Funktion... für die dritte MaterialDataSet/qty mit Hilfe von XPath Expression von /RawMaterials[3]/quantity/text()
- Speichern Sie die Zuordnung und generieren Sie die XSL
- Öffnen Sie die XSL-Datei und suchen Sie nach einem Konstrukt wie:
<xsl:template name="MaterialDataSet">
<reservedRawMatDataSet>
...
<xsl:template name="MaterialDataSet_1">
<reservedRawMatDataSet>
...
<xsl:template name="MaterialDataSet_2">
<reservedRawMatDataSet>
...- Suchen Sie die Zeile:
<xsl:call-template name="MaterialDataSet"/>- Fügen Sie nach dieser Zeile die folgende Zeile hinzu:
<xsl:call-template name="MaterialDataSet_1"/>
<xsl:call-template name="MaterialDataSet_2"/>Jetzt wird die XSL-Schablone richtig aufgerufen und entspricht Ihren Zuordnungen im XML-Zuordnungseditor.