Altova MapForce 2024 Professional Edition

Teilt den Input-String in eine Sequenz von Strings auf. Die Größe der einzelnen erzeugten Strings wird durch den Parameter length definiert.

mf-func-tokenize-by-length

 

Sprachen

Built-in, C++, C#, Java, XQuery, XSLT 2.0, XSLT 3.0..

 

Parameter

Name

Beschreibung

input

Der Input-String.

length

Definiert die Länge der einzelnen Strings in der generierten Stringsequenz.

 

Beispiel

Wenn der Input-String ABCDEF und "length " 2 ist, gibt die Funktion eine Sequenz von drei Strings zurück: AB, CD und EF.

 

mf-func-tokenize-by-length-example

 

Im oben gezeigten Modell-Mapping ist das Ergebnis der Funktion eine Sequenz von Strings. Entsprechend den allgemeinen Mappingregeln wird für jedes Datenelement in der Quellsequenz ein neues Datenelement item in der Zielkomponente erstellt. Die Mapping-Ausgabe sieht daher folgendermaßen aus:

 

<items>
  <item>AB</item>
  <item>CD</item>
  <item>EF</item>
</items>

 

 

Ein komplexeres Beispiel dazu finden Sie im Mapping tokenizeString2.mfd im Ordner <Dokumente>\Altova\MapForce2024\MapForceExamples\.

mf-func-tokenize-by-length-example2

tokenizeString2.mfd

Die unten gezeigte XML-Quelldatei ist dieselbe wie die im vorhergehenden Beispiel verwendete. Das Element MissionKit hat zwei Attribute: Edition und ToolCodes, aber keinen Inhalt für das Element "MissionKit". Beachten Sie, dass ein Teil des für dieses Beispiel nicht relevanten XML-Inhalts entfernt wurde.

 

<?xml version="1.0" encoding="UTF-8"?>
<AltovaTools xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="AltovaTools.xsd">
  <Version>2010</Version>
  <Tool Name="XMLSpy" Code="XS"><!--...--></Tool>
  <Tool Name="MapForce" Code="MF"><!--...--></Tool>
  <Tool Name="StyleVision" Code="SV"><!--...--></Tool>
  <Tool Name="UModel" Code="UM"><!--...--></Tool>
  <Tool Name="DatabaseSpy" Code="DS"><!--...--></Tool>
  <Tool Name="DiffDog" Code="DD"><!--...--></Tool>
  <Tool Name="SchemaAgent" Code="SA"><!--...--></Tool>
  <Tool Name="SemanticWorks" Code="SW"><!--...--></Tool>
  <Tool Name="Authentic" Code="AU"><!--...--></Tool>
  <MissionKit Edition="Enterprise Software Architects" ToolCodes="XSMFSVUMDSDDSASW"/>
  <MissionKit Edition="Professional Software Architects" ToolCodes="XSMFSVUMDS"/>
  <MissionKit Edition="Enterprise XML Developers" ToolCodes="XSMFSVDDSASW"/>
  <MissionKit Edition="Professional XML Developers" ToolCodes="XSMFSV"/>
</AltovaTools>

 

Ziel ist die Generierung einer Liste, in der Sie sehen, welche Altova-Tools jeweils Teil der entsprechenden MissionKit Editions sind.

 

Funktionsweise des Mappings:

 

Die SelectMissionKit Input-Komponente fungiert als Parameter für das Mapping; sie erhält ihren Standardwert von einer Konstante, in diesem Fall von "Enterprise XML Developers".

Die equal-Funktion vergleicht die als Parameter angegebene Edition mit dem Datenelement Edition aus der XML-Quelldatei und übergibt das Ergebnis an den Parameter bool des ToolCodes-Filters.

Der node/row-Input des ToolCodes-Filters stammt aus dem Quelldatei-Datenelement ToolCodes. Der Wert für die Enterprise XML Developers Edition ist: XSMFSVDDSASW.

Der Wert XSMFSVDDSASW wird an den on-true-Parameter übergeben und dann an den input-Parameter der tokenize-by-length Funktion.

Die tokenize-by-length-Funktion teilt den Wert XSMFSVDDSASW in mehrere aus je zwei Zeichen bestehende Blöcke auf. Der Parameter length beträgt 2; daher werden als Ergebnis 6 Blöcke erzeugt.

Jeder Block wird mit dem aus 2 Zeichen bestehenden Code-Wert der Quelldatei verglichen (von der es insgesamt 9 Einträg/Datenelemente gibt). Das Ergebnis des Vergleichs (true/false) wird an den bool-Parameter des Filters übergeben. Beachten Sie, dass alle Blöcke der tokenize-by-length Funktion an den node/row-Parameter des Filters übergeben werden.

Die exists-Funktion überprüft nun die Datei auf existing/non-existing (existierende/nicht existente) Nodes, die vom on-true Parameter der Filter-Komponente an die exists-Funktion übergeben werden. Existierende Nodes sind jene, für die eine Übereinstimmung zwischen dem ToolCodes-Block und dem Code-Wert besteht. Nicht existierende Nodes sind diejenigen, die keinen ToolCodes-Block enthalten haben, der mit einem Code-Wert übereingestimmt hat.

Die einzelnen bool-Ergebniss der exists-Funktion werden an die if-else Funktion übergeben, die in der Zielkomponente ein "Y" generiert, wenn der Node vorhanden ist oder ein "N", wenn der Node nicht existiert.

 

Des Ergebnis des Mappings sieht folgendermaßen aus:

 

Tool;MissionKit for Enterprise XML Developers
XMLSpy;Y
MapForce;Y
StyleVision;Y
UModel;N
DatabaseSpy;N
DiffDog;Y
SchemaAgent;Y
SemanticWorks;Y
Authentic;N

© 2017-2023 Altova GmbH