Deklarieren von benutzerdefinierten Namespaces

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > XML und XML-Schema >

Deklarieren von benutzerdefinierten Namespaces

Wenn mit einem Mapping eine XML-Ausgabe erzeugt wird, so übernimmt MapForce standardmäßig den Namespace (oder eine Gruppe von Namespaces) für die einzelnen Elemente und Attribute automatisch aus dem mit der Zielkomponente verknüpften Schema. Dies ist das Standardverhalten in MapForce und ist für die meisten Mapping-Szenarien, in denen eine XML-Ausgabe generiert werden soll, geeignet.

 

In einigen Fällen benötigen Sie jedoch manchmal mehr Kontrolle über den Namespace von Elementen in der erzeugten XML-Ausgabe. So müssen Sie z.B. den Namespace eines Elements manchmal direkt über das Mapping deklarieren.

 

Zur Veranschaulichung dient das Mapping BooksToLibrary.mfd aus dem Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\. Klicken Sie mit der rechten Maustaste auf den Node library und wählen Sie im Kontextmenü den Befehl Namespace hinzufügen.

mf_custom_namespace_01

 

Beachten Sie, dass unterhalb des Node library nun zwei neue Nodes zur Verfügung stehen: namespace und prefix.

mf_custom_namespace_02

Sie können nun String-Werte aus dem Mapping darauf mappen. In der Abbildung unten wurden zwei Konstanten definiert (über den Menübefehl Einfügen | Konstante), die den Namespace "altova.library" und das Präfix "lib" bereitstellen:

mf_custom_namespace_03

 

Infolgedessen wird in der generierten Ausgabe ein Attribut xmlns:<prefix>="<namespace>" zum Element hinzugefügt, wobei <prefix> und <namespace> Werte sind, die aus dem Mapping stammen (in diesem Fall aus Konstanten). Die generierte Ausgabe sieht nun folgendermaßen aus (beachten Sie den markierten Abschnitt):

 

<?xml version="1.0" encoding="UTF-8"?>
<library xmlns:lib="altova.library" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="library.xsd">

...

 

Anmerkung:Das Deklarieren von benutzerdefinierten Namespaces (und der Befehl Namespace hinzufügen) ist nur bei XML-Zielkomponenten sinnvoll und lässt sich nur auf Elemente anwenden. Der Befehl Namespace hinzufügen steht für Attribute und Wildcard-Nodes nicht zur Verfügung. Er steht auch nicht bei Nodes, die Daten über eine Alles-kopieren-Verbindung erhalten, zur Verfügung.

 

Sie können gegebenenfalls auch mehrere Namespaces für dasselbe Element deklarieren. Klicken Sie dazu erneut mit der rechten Maustaste auf den Node und wählen Sie im Kontextmenü den Befehl Namespace hinzufügen. Daraufhin steht ein neues Namespace- und Präfix-Node-Paar zur Verfügung, mit dem Sie die neuen Präfix- und Namespace-Werte verbinden können.

 

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.

 

Die Input-Konnektoren von namespace und prefix müssen gemappt werden, auch wenn Sie leere Werte dafür bereitstellen.

 

Wenn Sie einen Standard-Namespace (d.h. einen im Format xmlns="meinstandardnamespace") deklarieren möchten, mappen Sie einen leeren String-Wert auf prefix. Um dies auszuprobieren, bearbeiten Sie das Beispiel-Mapping oben, sodass die zweite Konstante ein leerer String ist.

 

mf_custom_namespace_04

 

Die erzeugte Ausgabe würde in diesem Fall folgendermaßen aussehen:

 

<?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 entwededr den dynamischen Zugriff auf die Attribute des Node aktivieren (siehe Mappen von Node-Namen) oder das Schema bearbeiten, so dass es ein Attribut prod:id für <number> hat.


© 2019 Altova GmbH