Wildcards: xs:any/xs:anyAttribute
In diesem Kapitel wird beschrieben, wie Sie Wildcards in Mappings behandeln können. Mit Hilfe der Wildcards xs:any und xs:anyAttribute können Sie in Ihrer Schema-Datei definierte any-Elemente/Attribute verwenden. Nähere Informationen zu Wildcards finden Sie in der W3C-Spezifikation.
Wildcards in der Schema-Definition
In der Abbildung unten wurde ein xs:any-Element als Child-Element des Person-Elements definiert (Schema-Ansicht in Altova XMLSpy).
Wildcards in MapForce
Wenn für ein Element und/oder Attribut eine Wildcard definiert wurde, wird neben diesem Node eine -Schaltfläche (Auswahl ändern) angezeigt (siehe Abbildung unten).
Wildcard-Auswahl
Wir möchten nun ein weiteres Element als separaten Node hinzufügen. Klicken Sie auf die Schaltfläche , um die Liste der Elemente, die zur Struktur hinzugefügt werden können, zu sehen. Beachten Sie, dass im Dialogfeld Wildcard-Auswahl nur Elemente und Attribute angezeigt werden, die in Ihrem Schema global deklariert wurden (siehe Abbildung unten).
Für dieses Beispiel haben wir Department ausgewählt. Beachten Sie, dass Wildcard-Elemente und -Attribute nach dem Node mit der Schaltfläche eingefügt werden. Unsere Komponente sieht nun folgendermaßen aus:
Sie können nun zwischen diesen Nodes wie gewöhnlich Mapping-Verbindungen erstellen. Wildcard-Elemente und -Attribute werden in einer Komponente mit (xs:any) bzw. (xs:anyAttribute) gekennzeichnet (siehe Abbildung oben).
Entfernen von Wildcards
Um einen Wildcard-Node zu entfernen, klicken Sie auf die und deaktivieren Sie das entsprechende Kontrollkästchen im Dialogfeld Wildcard-Auswahl.
Elemente/Attribute aus einem anderen Schema
Über das Dialogfeld Wildcard-Auswahl (siehe oben) können Elemente/Attribute aus einem anderen Schema verwendet werden. Wenn Sie auf die Schaltfläche Anderes Schema importieren klicken, haben Sie die folgenden Optionen: (i) Import einer Schema-Datei und (ii) Generierung eines Wrapper-Schemas (siehe Beschreibung unten).
Import eines Schemas
Mit der Option Schema importieren wird das externe Schema in das aktuelle, der Komponente zugewiesene Schema importiert. Beachten Sie, dass mit dieser Option das vorhandene Schema auf der Festplatte ersetzt wird. Wenn es sich beim aktuellen Schema nicht um ein entferntes über eine URL geöffnetes Schema (siehe Hinzufügen von Komponenten über eine URL) handelt und das Schema nicht von der lokalen Festplatte stammt, kann es nicht geändert werden. Verwenden Sie in diesem Fall die Option Wrapper-Schema generieren.
Generieren eines Wrapper-Schemas
Mit der Option Wrapper-Schema generieren wird eine neue als Wrapper-Schema bezeichnete Schema-Datei erstellt. Der Vorteil bei dieser Option ist, dass das bestehende Schema der Komponente nicht geändert wird. Stattdessen wird ein neues Schema erstellt, das sowohl das vorhandene Schema als auch das importierte Schema enthält. Wenn Sie diese Option auswählen, werden Sie gefragt, wo das Wrapper-Schema gespeichert werden soll. Standardmäßig hat das Wrapper-Schema das Format dateiname-wrapper.xsd.
Nachdem Sie das Wrapper-Schema gespeichert haben, wird es der Komponente standardmäßig automatisch zugewiesen. Außerdem werden Sie gefragt, ob Sie den Schemapfad anpassen möchten, um das vorherige Hauptschema referenzieren zu können. Klicken Sie auf Ja, um zum vorherigen Schema zurückzuwechseln oder auf Nein, damit das neu erstellte Wrapper-Schema der Komponente zugewiesen wird.
Wildcards oder dynamische Node-Namen
Es gibt Fälle, in denen eine Instanz zu viele Elemente und/oder Attribute enthält, als dass diese im Schema deklariert werden können. Betrachten Sie die folgende Beispieldatei:
<?xml version="1.0" encoding="UTF-8"?>
<message>
<line1>1</line1>
<line2>2</line2>
<line3>3</line3>
................
<line999></line999>
</message>
In solchen Fällen wird empfohlen, anstelle von Wildcards dynamische Node-Namen zu verwenden. Nähere Informationen dazu finden Sie unter Mappen von Node-Namen.