Benutzerdefinierte Namespaces
Wenn mit einem Mapping eine XML-Ausgabe erzeugt wird, so übernimmt MapForce den Namespace (oder eine Gruppe von Namespaces) für die einzelnen Elemente und Attribute automatisch aus dem Ziel-Schema. Dies ist das Standardverhalten, das für die meisten Szenarien, in denen eine XML-Ausgabe generiert werden soll, geeignet ist. In einigen Fällen müssen Sie den Namespace eines Elements jedoch direkt über das Mapping manuell deklarieren.
Die Deklaration benutzerdefinierter Namespaces ist nur bei XML-Zielkomponenten sinnvoll und gilt nur für Elemente. Der Befehl Namespace hinzufügen steht für Attribute, Wildcard Nodes und für Nodes, die Daten aus einer "Alles kopieren"-Verbindung erhalten, nicht zur Verfügung.
Um zu verstehen, wie benutzerdefinierte Namespaces funktionieren, folgen Sie der Anleitung in Unterabschnitt weiter unten.
Manuelle Deklaration eines Namespace
Sie benötigen für dieses Beispiel das folgende Mapping: BasicTutorials\Tut1-OneToOne.mfd.
Hinzufügen eines Namespace
Öffnen Sie das Mapping, kllicken Sie in der Komponente BooksOutput mit der rechten Maustaste auf den Node library und wählen Sie im Kontextmenü den Befehl Namespace hinzufügen. Unter dem Element library stehen nun zwei neue Nodes zur Verfügung: namespace und prefix (siehe Abbildung unten).
Bereitstellen von Namespace-Werten
Im nächsten Schritt müssen nun Werte für die Nodes namespace und prefix angegeben werden. Zu diesem Zweck verwenden wir zwei Konstanten mit den folgenden String-Werten: altova.library und lib (siehe Abbildung unten).
Anmerkung: | Sowohl der namespace- aus auch der prefix-Input-Konnektor muss gemappt werden, auch wenn Sie dafür leere Werte angeben. |
Ausgabe
In der generieren Ausgabe wird zum Element ein xmlns:<prefix>="<namespace>"-Attribut hinzugefügt, wobei <prefix> und <namespace> Werte sind, die vom Mapping geliefert werden. Die Ausgabe sieht nun folgendermaßen aus (Beachten Sie den markierten Teil):
<?xml version="1.0" encoding="UTF-8"?>
<library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lib="altova.library" xsi:noNamespaceSchemaLocation="Library.xsd">
...
Sie können für dasselbe Element auch mehrere Namespaces deklarieren, falls nötig. Klicken Sie dazu mit der rechten Maustaste auf den Node und wählen Sie im Kontextmenü den Befehl Namespace hinzufügen. Es steht nun ein neues Paar an "namespace" und "prefix"-Nodes zur Verfügung, mit dem Sie neue Präfix- und Namespace-Werte verbinden können.
Deklarieren eines Standard-Namespace
Wenn Sie einen Standard-Namespace deklarieren möchten, mappen Sie einen leeren String-Wert auf prefix. Die Ausgabe würden dann folgendermaßen aussehen (Beachten Sie den markierten Teil):
<?xml version="1.0" encoding="UTF-8"?>
<library xmlns="altova.library" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Library.xsd">
...
Wenn Sie Präfixe für Attributnamen erstellen müssen, z.B. <number prod:id="prod557">557</number>, können Sie dies durch dynamischen Zugriff auf die Attribute eines Node (siehe Mappen von Node-Namen.) oder durch Bearbeiten des Schemas tun, so dass es ein prod:id-Attribut für <number> hat.
Entfernen eines Namespace
Um eine zuvor hinzugefügte Namespace-Deklaration zu entfernen, klicken Sie mit der rechten Maustaste auf den Node ns:namespace und wählen Sie im Kontextmenü den Befehl Namespace entfernen.