Einige Funktionen im XML-Schema werden nicht unterstützt, oder ihre Unterstützung ist auf irgendeine Weise eingeschränkt.
Beim Importieren eines XML-Schemas in eine Nachrichtengruppe, die Namespaces unterstützt, wird die Anweisung zur erneuten Definition (Redefine) zwar akzeptiert, sie verursacht jedoch eine Fehlernachricht in der Taskliste, da sie nicht vollständig unterstützt wird.
Der folgende XML-Code zeigt ein Beispiel für die diese Anweisung:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Nicht unterstützte Funktion: redefine --> <redefine schemaLocation="test.xsd"/> </schema>
Beim Import eines XML-Schemas in eine Nachrichtengruppe, die Namespaces unterstützt, werden nachfolgend aufgeführte Anweisungen akzeptiert, jedoch ignoriert, d. h. nicht im Broker eingesetzt. Versucht der Benutzer, ein Schema mit einer oder mehreren dieser Anweisungen zu importieren, wird die Warnung zurückgegeben, dass die betreffenden Anweisungen ignoriert werden. Die Anweisungen können gelöscht werden, ihre Eigenschaften können jedoch nicht konfiguriert werden.
Diese Schemadeklarationen sind nachfolgend aufgelistet:
Der folgende XML-Code zeigt ein Beispiel für jede dieser Anweisungen:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Unterstützte Funktion: unique --> <element name="element1" type="string"> <unique name="unique1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </unique> </element> <!-- Unterstützte Funktion: key --> <element name="element2" type="string"> <key name="key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </key> </element> <!-- Unterstützte Funktion: keyref --> <element name="element3" type="string"> <keyref name="keyref1" refer="ibm:key1"> <selector xpath="path1"></selector> <field xpath="path1"></field> </keyref> </element> </schema>
Dieses Problem tritt auf, wenn ein XML-Schema mit einem Zielnamespace ein anderes XML-Schema beinhaltet, das über keinen Zielnamespace verfügt. Die im Nachrichtenmodell für das "Include" (Einschließen) erstellte Schemaposition gibt lediglich den Dateinamen an. Diese Spezifikation berücksichtigt nicht, dass sich die einschließende und die eingeschlossene Nachrichtendefinitionsdatei in verschiedenen Verzeichnissen innerhalb des Nachrichtenmodells befinden.
Sie können das Problem auf der Workbench im Nachrichtendefinitionseditor auf der Registerkarte Eigenschaften der einschließenden Nachrichtendefinitionsdatei beheben. Löschen Sie den Include-Eintrag mit der falschen Schemaposition, und fügen Sie einen neuen Include-Eintrag mit der richtigen Datei hinzu, die Sie im Dateimenü wählen können.
Je nach den Einstellungen auf der Einstellungsseite des XML-Schemaimportprogramms (bzw. in der Importoptionendatei mqsicreatemsgdefs) können Sie entscheiden, ob Sie diese Anweisungen akzeptieren, zurückweisen oder ändern möchten.
Wenn Sie sich bei einer solchen Anweisung für "Zurückweisen" entscheiden, wird der Import angehalten und der Vorfall protokolliert.
Wenn Sie "Ändern" (die Standardeinstellung) angeben, wird die ausgegebene Nachrichtendefinitionsdatei wie folgt geändert:
Aus Kompatibilitätsgründen werden die gleichen Änderungen vorgenommen wie vom bisherigen Befehl des Version 2.1 XML-Schemaimportprogramms.
Wenn Sie "Akzeptieren" angegeben, importiert das Importprogramm eine solche Anweisung, so wie sie ist. Dies kann abhängig von der jeweiligen Anweisung zu Tasklistenfehlern führen, so wie oben für Nachrichtengruppen mit Unterstützung für Namespaces beschrieben.
Der folgende XML-Code zeigt ein Beispiel für jede dieser Anweisungen:
<?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns:ibm="http://www.ibm.com"> <!-- Unterstützte Funktion: redefine --> <redefine schemaLocation="test.xsd"/> <!-- Unterstützte Funktion: import --> <import schemaLocation="test1.xsd" namespace="http://www.ibm1.com"/> <!-- Unterstützte Funktion: list --> <simpleType name="type1"> <list itemType="string" /> </simpleType> <!-- Unterstützte Funktion: union --> <simpleType name="type2"> <union memberTypes="string" /> </simpleType> <!-- Unterstützte Funktion: abstract complex type --> <complexType name="type3" abstract="true"></complexType> <!-- Unterstützte Funktion: abstract element --> <element name="element" type="string" abstract="true"></element> </schema>
Die Liste der Anweisungen und der auszuführenden Aktionen entspricht der Liste für Nachrichtengruppen mit Unterstützung von Namespaces (siehe Beschreibung oben).
Beim Importieren eines XML-Schemas in eine Nachrichtengruppe, die keine Namespaces unterstützt, werden keine Schemadokumente mit einem Zielnamespace ohne Präfix importiert. Beispiel:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com" xmlns="http://www.ibm.com"> </xsd:schema>