Massenimport für externe
Definitionen
Der ES Builder bietet einen Wizard für einen Massenimport von externen Definitionen an. Mit Hilfe des Wizards können Sie Dateien im WSDL-, XSD- und DTD-Format von allen logischen Laufwerken des Windows-Explorers in eine Importliste aufnehmen. Der Wizard macht in einer Vorschau Vorschläge für die zu vergebenden Namen der anzulegenden externen Definitionen und analysiert Verweise auf andere Dateien (nur bei Dateien im WSDL- und XSD-Format). Schließlich können Sie von dem Wizard alle externe Definitionen auf einmal in einem Namensraum des ES Repository anlegen lassen.
Der Wizard kann auf keine Dateien zugreifen, die Teil eines Archivs sind. Entpacken Sie vorher alle Dateien in einem Verzeichnis.
Die zu importierenden Dateien müssen WSDL-, XSD- beziehungsweise DTD-Standard genügen. Der Wizard bestimmt den Dateityp anhand der Dateiendung:
Dateiendung |
Kategorie der externen Definition |
.xsd |
XSD |
.wsdl |
WSDL |
.dtd |
DTD |
(andere oder keine) |
WSDL |
Wenn der Wizard die Kategorie nicht über die Dateiendung bestimmen kann, weist er der Datei eine entsprechende Meldung zu, die in der Vorschau abrufbar ist.
Wenn Sie im Schritt Dateien auswählen die Option Referenzierte Dateien importieren auswählen, erkennt der Wizard Verweise von WSDL-Dateien auf XSD-Dateien und von XSD-Dateien auf andere XSD-Dateien. Der Wizard ermittelt die referenzierte Datei über das Attribut schemaLocation und nimmt diese ebenfalls in die Importliste mit auf. Der Wizard kann die referenzierte Datei nur ermitteln, wenn auf eine Datei im lokalen Dateisystem verwiesen wird (absolut oder relativ).
Beim Erstellen der Importliste prüft der Wizard, ob für eine Datei problemlos eine externe Definition im ausgewählten Namensraum angelegt werden kann. Wenn es zum Import einer Datei Warnungen oder Fehler gibt, können Sie diese Meldungen in der Vorschau aufrufen. Es gibt grundsätzlich folgende Ursachen für eine Meldung:
· Die Datei kann nicht eingelesen werden oder hat ein unbekanntes Format.
· Es gibt bereits eine namensgleiche externe Definition im ausgewählten Repository-Namensraum des ES Repository.
· Es gibt in der Importliste mehrere Dateien mit dem gleichen Dateinamen (aus unterschiedlichen Verzeichnissen).
· Die in der Datei enthaltenen Verweise können beim Import nicht auf Verweise zwischen den externen Definitionen umgesetzt werden.
Die zu importierenden XML-Dateien sind in der Regel in einer Verzeichnishierarchie abgelegt. Diese Hierarchie geht beim Import in das ES Repository verloren, weil alle externen Definitionen in einem Repository-Namensraum angelegt werden. Dies ist die Ursache für einige der oben beschriebenen Konflikte.
Die folgenden Tabellen gibt eine Übersicht über Meldungen in der Vorschau und gibt Hinweise für ihre Ursache. Wenn die Meldungen nur bei einem bestimmten Dateityp auftreten können, ist dies in der Tabellenüberschrift gekennzeichnet.
Meldungen zum Dateiformat
Nr. |
Meldung |
Ursache |
1 |
Datei <Dateiname> konnte nicht als WSDL oder XML Schema identifiziert werden. Es wird trotzdem eine externe Definition der Kategorie WSDL dafür angelegt. |
Die Datei hat keine der Dateiendungen xsd, wsdl, dtd oder xml und kann daher keinem Format eindeutig zugeordnet werden. |
2 |
Datei <Dateiname> ist eine XML Datei. Für diese wurde eine externe Definition der Kategorie WSDL angelegt. |
Die Datei hat die Dateiendung xml. Da Dateien im WSDL- oder XSD-Format auch XML-Dateien sind, legt der Wizard eine WSDL-Datei an (WSDL-Dateien dürfen XSD-Anweisungen enthalten). |
3 |
Das XML Schema in Datei <Dateiname> konnte nicht eingelesen werden. |
Die Datei hat die Dateiendung xsd, könnte aber nicht eingelesen werden. Möglicherweise ist das XML Schema der Datei ungültig. |
Meldungen zu Namenskonflikten
|
Meldung |
Ursache (und Lösung) |
4 |
Es exisitiert bereits eine externe Definition mit Namen <Name der Definition im ES Repository>. |
Im ES Repository ist in dem Namensraum, in dem die externe Definition für diese Datei angelegt werden soll, bereits eine externe Definition mit dem gleichen Namen vorhanden. Beim Import würde der Wizard diese externe Definition überschreiben. Prüfen Sie, ob die beiden externen Definitionen identisch sind. Wenn ja, brauchen Sie die Datei nicht importieren. Falls nein, müssen Sie die Datei unter einem anderen Namen importieren, ansonsten überschreibt der Wizard die externe Definition im ES Repository. |
5 |
Es existiert bereits eine externe Definition mit gleichem Namen <Name der Definition im ES Repository> und gleicher Quelle <Quelle>. |
Im ES Repository ist in dem Namensraum, in dem die externe Definition für diese Datei angelegt werden soll, bereits eine externe Definition mit dem gleichen Namen vorhanden. Bei der bereits existierenden externen Definition ist die gleiche Quelle angegeben (daher ist anzunehmen, dass auf diese Definition bereits von einer anderen externen Definition verwiesen wird). Prüfen Sie, ob die beiden externen Definitionen identisch sind. Wenn ja, brauchen Sie die Datei nicht importieren. Falls nein, müssen Sie die Datei unter einem anderen Namen importieren (ansonsten überschreibt der Wizard die externe Definition im ES Repository) und sollten ihr eine andere Quelle zuweisen. |
6 |
Der Name <Dateiname> ist schon in der aktuellen Importliste. Es wurde dafür der Name <Name der externen Definitinon> generiert. |
Sie haben für den Import zwei Dateien ausgewählt, die in unterschiedlichen Verzeichnissen liegen und den gleichen Dateinamen haben. Um Namenskonflikte auszuschließen, hängt der Wizard eine Nummer an den Namen für die externe Definition. |
Unterschiedliche Verweise auf die gleiche Datei (WSDL, XSD)
Nr. |
Meldung |
Ursache |
7 |
Es existiert bereits eine externe Definition <extDefName> mit unterschiedlicher Quelle <Quelle>. |
Im ES Repository ist in dem Namensraum, in dem die externe Definition für diese Datei angelegt werden soll, bereits eine externe Definition mit dem gleichen Namen <extDefName> vorhanden. Bei der bereits existierenden externen Definition ist eine andere Quelle angegeben (daher ist anzunehmen, dass auf diese Definition bereits von einer anderen externen Definition verwiesen wird). Es gibt in zwei oder mehr Dateien in der Importliste jeweils unterschiedliche Verweise auf eine externe Definition mit dem Namen <extDefName>, Sie können aber pro externe Definition nur eine Quelle angeben. Ändern Sie den Namen der externen Definition in der Importliste. Weitere Informationen im Beispiel unten. |
8 |
Für die externe Definition <extDefName> zur importierten Datei <Dateiname> soll die weitere Quelle <Quelle> vergeben werden. |
Für die neu anzulegende externe Definition in der Importliste (Datei <Dateiname>) hat der Wizard bereits eine Quelle eingetragen, weil auf diese Definition von einer anderen Definition in der Importliste verwiesen wurde. Auf Grund eines zweiten Verweises auf diese Definition müsste der Wizard eine weitere Quelle für diese Definition eintragen, was nicht möglich ist. Es gibt in zwei oder mehr Dateien jeweils unterschiedliche Verweise auf die Definition <extDefName>, sie können für diese Definition aber nur eine Quelle angeben. Importieren Sie die externe Definition ein zweites Mal und geben Sie als Quelle die Verweise der anderen Datei an. Weitere Informationen im Beispiel unten. |
9 |
Diese externe Definition referiert die externe Definition <extDefName>. Deren Quelle <Quelle> konnte nicht gesetzt werden. |
Diese Meldung ist das Gegenstück zu Meldung 8. Die Quelle der externen Definition <extDefName> konnte nicht gesetzt werden, weil sie auf Grund eines anderen Verweises bereits gesetzt worden ist (vergleiche Meldung 8). |
Eine XSD-Datei C:\common.xsd wird von den XML-Dateien (1) C:\standalone\varTypes.xsd und (2) C:\integrated\local\varTypes.xsd jeweils über einen relativen Verweis inkludiert:
(1) <xsd:import schemaLocation="../common.xsd" />
(2) <xsd:import schemaLocation="../../common.xsd" />
Wenn Sie alle drei Dateien beim Massenimport importieren, versucht der Wizard diese Verweise auf Verweise zwischen den externen Definitionen abzubilden. Dazu muss die externe Definition common zur Datei common.xsd eine Quellenangabe als Identifikator haben (Feld Quelle in den Kopfdaten von common), auf die von den anderen beiden externen Definitionen verwiesen wird. Auf Grund der Verzeichnishierarchie gibt es aber zwei verschiedene Quellenangaben (einmal ../common.xsd und einmal ../../common.xsd). Diesen Konflikt können Sie lösen, indem Sie common.xsd zwei Mal importieren (jeweils mit einem anderen Namen, beispielsweise common0 und common1): Bei einem Import geben Sie dann beispielsweise für common0 als Quelle ../common.xsd an und für common1 die Quelle ../../common.xsd.
Außerdem müsste der Wizard im gleichen Repository-Namensraum zwei externe Definitionen mit dem gleichen Namen anlegen (varTypes). In diesem Beispiel würde der Wizard ein Suffix verwenden, um den Konflikt aufzulösen (varTypes0, varTypes1).
Verweis auf einen Dateinamen in zwei verschiedenen Verzeichnispfaden (WSDL, XSD)
Nr. |
Meldung |
Ursache |
10 |
Es existiert bereits eine externe Definition <Name> mit gleicher Quelle <Quelle>. |
Im ES Repository ist in dem Namensraum, in dem die externe Definition <Name> für diese Datei angelegt werden soll, bereits eine externe Definition mit gleicher Quelle vorhanden. |
11 |
Es wurde bereits ein externe Definition <Name> mit gleicher Quelle <Quelle> importiert. |
In der Importliste ist für die externe Definition, die für diese Datei angelegt werden soll, bereits eine andere externe Definition mit gleicher Quelle vorhanden. |
Diese beiden Meldungen beziehen sich auf den Fall, dass zwei Dateien über den selben relativen Link auf unterschiedliche Dateien verweisen, es ist aber unklar, ob die Datei den gleichen Inhalt hat.
Gegeben sei folgende Verzeichnisstruktur:
(1) c:\types.xsd
(2) c:\RequestMessages\SalesOrder.xsd
(3) c:\ApplicationMessages\types.xsd
(4) c:\ApplicationMessages\ResponseMessages\InvoiceConfirmation.xsd
SalesOrder.xsd von Zeile (2) verweist auf types.xsd aus Zeile (1). InvoiceConfirmation.xsd von Zeile (4) verweist auf types.xsd aus Zeile (3). Beide Verweise verwenden also die gleiche Quellenangabe (schemaLocation=“../types.xsd“).
Im Fall von Meldung 11 enthält die Importliste alle Dateien des Beispiels ((1)-(4)); Meldung 10 zeigt an, dass bei einem früheren Import entweder die Dateien (1) und (2) oder die Dateien (3) und (4) importiert worden sind. In beiden Fällen müssen Sie überprüfen, ob der Inhalt der Datei types.xsd von Zeile (1) der gleiche ist wie der Inhalt der Datei types.xsd von Zeile (3):
● Ist der Inhalt derselbe, braucht die Datei types.xsd nur einmal importiert werden. Die Referenzen von SalesOrder.xsd (2) und InvoiceConfirmation.xsd (4) sind korrekt.
● Ist der Inhalt unterschiedlich, gehen Sie folgendmaßen vor:
...
a. Falls nicht schon geschehen bei einem vorhergehenden Import, importieren Sie zunächst nur die eine Version von types.xsd und die dazu passende referierende Datei, beispielsweise (1) und (2).
b. Kopieren Sie InvoiceConfirmation.xsd (4) und ändern Sie in der Kopie den Verweis, beispielsweise auf schemaLocation=“ApplicationTypes.xsd“.
c. Importieren Sie (3) und (4) und weisen Sie (3) als Quelle diejenige zu, die Sie im letzten Schritt in der Kopie eingetragen haben (in diesem Beispiel: ApplicationTypes.xsd).
...
1. Um den Massenimport zu starten, wählen Sie Werkzeuge → Externe Definitionen importieren.
2. Folgen Sie den Anweisungen des Wizards.