Altova MapForce 2024 Professional Edition

Manchmal gibt es Fälle, in denen eine Node-Funktion etwas auf Basis von Node-Metadaten tun soll. Unter "Node-Metadaten" verstehen wir verschiedene in Schema gespeicherte Informationen über den Node, auf den die Funktion angewendet wird, wie z.B. Node-Name, die Länge des Werts oder die Genauigkeit (precision). Die unten stehende Tabelle enthält eine Liste aller möglichen Metadatenparameter, die in einer Node-Funktion verwendet werden können. Beachten Sie, dass einige Metadatenparameter nur auf bestimmte Datentypen angewendet werden. Es wird eine Warnung in MapForce angezeigt, wenn Sie versuchen, Metadaten zu verwenden, die mit dem aktuellen Node nicht kompatibel sind.

 

Metadatenparameter

Beschreibung

node_name

Liefert den Namen des aktuellen Node, so wie er in der Komponente angezeigt wird. Diese Metadaten werden von allen Nodes unterstützt. Bei XML-Daten bezieht sich node_name auf den Namen des aktuellen Elements oder Attributs. Bei CSV-Daten bezieht sich node_name auf den Namen eines CSV-Felds. In Datenbanken bezieht sich node_name auf den Namen einer Tabellenspalte.

node_annotation

Zeigt in der Ausgabe Annotationstext neben dem Node-Wert an. Diese Metadaten werden von allen Nodes unterstützt.

node_minLength

Liefert den Wert des minLength Facet des Datentyps des Node. Gilt für XML- und Text-Nodes des entsprechenden Typs. Nähere Informationen zu die Länge einschränkenden Facets finden Sie in der XML Schema Recommendation.

node_maxLength

Liefert den Wert des maxLength Facet des Datentyps des Node. Gilt für XML- und Text-Nodes des entsprechenden Typs. Nähere Informationen zu die Länge einschränkenden Facets finden Sie in der XML Schema Recommendation.

node_totalDigits

Liefert den Wert des totalDigits Facet des Datentyps des Node. Gilt für XML-Nodes des entsprechenden Typs. Nähere Informationen zum totalDigits Facet finden Sie in der XML Schema Recommendation.

node_fractionDigits

Liefert den Wert des fractionDigits Facet des Datentyps des Node. Gilt für XML-Nodes des entsprechenden Typs. Nähere Informationen zum fractionDigits Facet finden Sie in der XML Schema Recommendation.

node_length

Liefert die Länge einer Zahl (in Bytes). Gilt für Datenbankfelder des entsprechenden Typs. Nähere Informationen zur Länge finden Sie in der Microsoft-Dokumentation.

node_precision

Liefert die Anzahl aller Stellen einer Zahl. Gilt für Datenbankfelder des entsprechenden Typs. Nähere Informationen dazu finden Sie in der Microsoft-Dokumentation.

node_scale

Liefert die Anzahl der Stellen rechts vom Dezimalkomma einer Zahl. Gilt für Datenbankfelder des entsprechenden Typs. Nähere Informationen dazu finden Sie in der Microsoft-Dokumentation.

 

Anmerkung:Der Datentyp eines Metadateparameters muss mit dem Datentyp des entsprechenden Node übereinstimmen. Andernfalls schlägt die Ausführung der Funktion fehl.

 

Hinzufügen von Metadaten zu einer Node-Funktion

Um einen Metadatenparameter zu einer Node-Funktion hinzuzufügen, müssen Sie eine Node-Funktion erstellen und anschließend unterhalb des Node-Funktionsfensters auf die Option Node-Angaben hinzufügen klicken. Daraufhin wird das Dialogfeld Input mit Node-Informationen einfügen, in dem Sie den entsprechenden Metadatenparameter auswählen können, aufgerufen. Anstelle der Option Node-Angaben hinzufügen können Sie auch eine der folgenden Optionen auswählen:

 

Klicken Sie mit der rechten Maustaste auf einen leeren Bereich im Mapping und wählen Sie im Kontextmenü den Befehl Input-Komponente einfügen.

Klicken Sie auf die Symbolleisten-Schaltfläche mf_ic_udf_input.

Klicken Sie im Menü Funktion auf Input-Komponente einfügen.

 

Wenn Metadaten von einem Node nicht unterstützt werden

Wenn ein Metadatenparameter von einem Node nicht unterstützt wird, können Sie MapForce anweisen, eine leere Sequenz zurückzugeben oder die Node-Funktion nicht anzuwenden (beide Optionen stehen im Dialogfeld Input mit Node-Informationen einfügen zur Verfügung). Die leere Sequenz muss behandelt werden, da sonst möglicherweise gar kein Wert von der Funktion zurückgegeben wird. Normalerweise müssen sie diese mit Hilfe von Sequenzfunktionen wie substitute-missing oder exists oder anderen Komponententypen weiter verarbeiten.

 

Beispiel

Im unten gezeigten Beispiel sehen Sie, wie Sie Annotationstext zu einer Node-Funktion hinzufügen. Sie benötigen für dieses Beispiel das folgende Mapping: <Dokumente>\Altova\MapForce2024\MapForceExamples\MissingFields.mfd. Wir haben in MissingFields.xsd (der Datei, auf der MissingFields.xml basiert) die folgenden Annotation zum Element Namehinzugefügt: Article name from catalog Spring 2022. Diese Annotation soll nun an eine Node-Funktion übergeben und in der Ausgabe angezeigt werden. Gehen Sie folgendermaßen vor:

 

1.Erstellen Sie in der Komponente ArticlesOfClothing für das Element Name eine Node-Funktion.

2.Replizieren Sie die unten gezeigte Funktion. Um einen node_annotation-Parameter hinzuzufügen, klicken Sie auf Node-Angaben hinzufügen (siehe rotes Rechteck unten) und wählen Sie diesen Parameter aus der Liste aus. Eine Anleitung dazu, wie Sie Funktionen hinzufügen und bearbeiten, finden Sie unter Grundlegendes zu Funktionen.

mf_nodefunc_16

 

Anmerkung:Tief verschachtelte Strukturen werden standardmäßig nicht zur Gänze untersucht, um Arbeitsspeicher zu sparen und die Leistung zu verbessern. Wenn die Komponente, auf die die Node-Funktion angewendet werden soll, so tief verschachtelte Strukturen hat, können Sie die entsprechenden Nodes im Mapping erweitern, damit MapForce diese untersucht. In diesem Fall berücksichtigt MapForce diese Nodes, wenn Sie einen neuen Metadatenparameter hinzufügen und die Warnung wird eventuell nicht mehr angezeigt. Die Node-Funktion muss verbunden sein, damit sie wirksam wird; ob nicht verbundene Datenelemente erweitert werden, spielt keine Rolle.

 

Ausgabe

Im Codefragment unten sehen Sie, dass die Annotation zu den Werten der Name-Elemente hinzugefügt wurde.

 

T-Shirt (Article name from catalog Spring 2022)   25.5  20    Available in black, blue, and red

Shirt (Article name from catalog Spring 2022)     70.3  60                                  

Pants (Article name from catalog Spring 2022)                 Limited stock              

Jacket (Article name from catalog Spring 2022)    57.5  40

 

© 2018-2024 Altova GmbH