Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation collapseContexts  Dokument im Navigationsbaum lokalisieren

Verwendung

Durch die Anwendung von collapseContexts() werden jeweils die ersten Werte aller Kontexte in einen Kontext aufgenommen. Leere Kontexte werden durch einen leeren String ersetzt:

Diese Grafik wird im zugehörigen Text erklärt

Die kann zum Beispiel sinnvoll sein, wenn jedes Mal ein übergeordneter Knoten erzeugt werden soll, wenn es einen untergeordneten Knoten gibt. Die Funktion ist in Kombination mit der Funktion SplitByValue nützlich.

Beispiel

In dem folgenden Beispiel soll für jedes auftretende Element <srcItem> ein eigenes übergeordnetes Element <destSub> in der Zielstruktur erzeugt werden:

Ausgangsstruktur (links) und Zielstruktur (rechts)

Feldname

minOccurs

maxOccurs

Feldname

minOccurs

maxOccurs

srcRoot

1

1

destRoot

1

1

  srcSub

0

unbounded

  destSub

0

unbounded

    srcItem

0

unbounded

    destItem

0

unbounded

Sie erreichen dies über eine Kombination der Funktionen SplitByValue() und collapseContexts(). Um für <destItem> eine Queue zu erzeugen, in der ein Kontextwechsel nach jedem Wert stattfindet, verwenden Sie removeContexts() und SplitByValue(). Um eine Queue mit genauso vielen Kontextwechseln zu erzeugen, allerdings mit leeren Werten (Ziel ist es ja, genauso viele übergeordnete Tags ohne Wert zu erzeugen), wenden Sie auf die gleiche Schachtelung von Funktionen schließlich noch collapseContexts() an:

Message-Mapping mit collapseContexts() und SplitByValue()

Zielfeld-Mapping

Wert von SplitByValue()

/destRoot=/srcRoot

 

/destRoot/destSub=
  collapseContexts(
    SplitByValue(
      removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

/destRoot/destSub/destItem=
  SplitByValue(
    removeContexts(/srcRoot/srcSub/SrcItem)))

Each Value

Beispiel

Ausgangs-Instanz

Ergebnis

<?xml version="1.0"
 encoding="UTF-8"?>

 

<srcRoot>

  <srcSub>

    <srcItem>
        PID001
    </srcItem>
    <srcItem>
        PID002
    </srcItem>

  </srcSub>
  <srcSub>

    <srcItem>
        PID003
    </srcItem>
    <srcItem>
        PID004
    </srcItem>
    <srcItem>
        PID005
    </srcItem>

  </srcSub>
  <srcSub>

    <srcItem>
        PID006
    </srcItem>
    <srcItem>
        PID007
    </srcItem>

  </srcSub>

</srcRoot>

<?xml version="1.0" encoding="UTF-8"?>

 

<ns0:destRoot
 xmlns:ns0="workshopDemo">

  <destSub>

    <destItem>
        PID001
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID002
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID003
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID004
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID005
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID006
    </destItem>

  </destSub>

  <destSub>

    <destItem>
        PID007
    </destItem>

  </destSub>

 

</ns0:destRoot>

 

 

 

Ende des Inhaltsbereichs