Common.XmlQuery

Common.XmlQuery

Dieser Service ist Teil der B2B Funktionalität und ermöglicht das Lesen von xml-Dateien. Wenn Sie den Service in einem F-Script nutzen, können Sie den Inhalt einer xml-Datei oder eines xml-Fragments lesen und das Resultat via XFAS als Tabelle zurückgeben.
Einige der in der vorliegenden Dokumentation häufig verwendeten Begriffe:
Begriff Beschreibung
Node
Knotenpunkt in einer xml-Datei (z.B. <Element>)
RootNode
Äusserstes Element einer xml-Datei bzw. "Startelement"
AbsXPath
Absolute XPath-Expression
Kompletter XPath, ausgehend vom äussersten Element: <RootNode>
RelXPath
Relative XPath-Expression
Relativer XPath, ausgehend von einem definierten <Node>, welcher gem. AbsXPath bestimmt ist.
Namespace
Namensraum
Namensräume werden verwendet um das Vokabular einer xml-Datei eindeutig identifizieren zu können. Mit Namensräumen ist es möglich, mehrere xml-Sprachen zu mischen. Die Funktionsweise von Namensräumen kann mit Vorwahlen bei Telefonnummern verglichen werden.
XML Schema
XML Schema (beziehungsweise XSD für XML-Schema-Definition) ist eine Möglichkeit, die Struktur von XML-Dokumenten zu beschreiben. Ein Schema ist dabei selber ein xml-Dokument und erlaubt es, auch komplexe (inhaltliche) Zusammenhänge zu beschreiben.
XPath 1.0
Die XML Path Language (XPath) ist eine vom W3-Konsortium entwickelte Abfragesprache, um Teile eines xml-Dokuments zu adressieren und auszuwerten.
Wichtig
Wichtig
Common.XmlQuery unterstützt nur XPath 1.0!
Hinweis
Hinweis
Informationen zu XPath finden Sie u.a. auf folgender Webseite: w3schools
An dieser Stelle wird nicht weiter auf XML eingegangen. Informationen zum Aufbau von xml-Dateien, zu Elementen, Attributen, etc. finden Sie in vielen Fachbüchern oder auf Webseiten wie z.B. wikipedia.de.

Argumente

Der Service Common.XmlQuery verfügt über folgende Argumente:
Argument Beschreibung Mögliche Werte / Beispiele
SourceFile=
xml-Datei welche verarbeiten werden soll.
Wichtig
Wichtig
Die Datei muss im Verzeichnis \insyde\tmp abgelegt sein!
SourceFile=FileName.xml
SourceXml=
xml-Fragment welches verarbeitet werden soll. Das xml-Fragment wird als String übergeben.
<document>
<head>xml is cool</head>
</document>
SourceFileEncoding=
Spezifiziert, in welchem Encoding die xml-Datei vorliegt. Dabei ist das Encoding UTF-8 der Default und muss nicht zwingend angegeben werden.
Hinweis
Hinweis
Beachten Sie, dass B2B-Messenger-http-Response-Files mit ANSI-Encoding gespeichert werden.
Das bedeutet, dass beim Verarbeiten von solchen Response-Files "ANSI" deklariert werden muss!
SourceFileEncoding=UTF8

SourceFileEncoding=ANSI

SourceFileEncoding=OEM
EmptyLinesToSkip=
Anzahl leere Linien die übersprungen werden, bevor mit dem eigentlichen Parsen der xml-Datei begonnen wird.
Diese Funktionalität wird benötigt um B2B-Messenger-http-Response-Files zu verarbeiten. (Diese Files beinhalten neben den eigentlichen xml-Body-Daten auch den http-Response-Header.)
1 - n

EmptyLinesToSkip=2
Namespace=
Deklaration der in den übrigen Argumenten verwendeten xml-Namespaces. (Jeweils inkl. des gewünschten Prefix)
Die Deklaration eines Namespace kann mehrmals vorkommen.
Beachten Sie, dass auch für einen eventuell vorkommenden Default-Namespace ein Prefix definiert werden muss.
Grund: Die XPath-Spezifikation behandelt Namen ohne Prefix als "null"-Namespace und nicht als Bestandteil des Default-Namespace.
Namespace= ns1,urn:ExampleForNS1

Namespace= ns2,http://Namespace2
Rows=
Angabe der zur verwendenden xml-Knoten als Basis für alle Rows. (Absolute XPath-Expression.)
Wichtig
Wichtig
  • Kein / am Schluss!
  • Es muss zusätzlich eine Werte-Quelle definiert werden. (Values oder Column/TmpFileColumn)
Rows=/document/data
Columns=
Angabe der zur verwendenden xml-Knoten als Basis für alle Spalten. (Absolute XPath-Expression.)
Wichtig
Wichtig
  • Kein / am Schluss!
  • Es muss zusätzlich eine Werte-Quelle definiert werden. (Values oder Column/TmpFileColumn)
Columns=/document/data
Values=
Angabe der XML-Knoten mit allen Werten einer Column/Row. (XPath-Expression relativ zu Column- oder Row-Node, je nachdem ob "Columns" oder "Rows" spezifiziert sind.)
Wichtig
Wichtig
  • Kein / am Anfang! (relativ)
  • Kein / am Schluss!
text()
option/@arguments
Headers=
Absolute XPath-Expression welche die xml-Knoten mit allen Spalten-Überschriften spezifiziert.
Wichtig
Wichtig
Nicht in Kombination mit Header!
/Adressen/Row[1]/Cell
Header=
Angabe des XML-Knotens mit der Überschrift [Name] einer Spalte. (XPath-Expression relativ zu Column-Node.)
Wichtig
Wichtig
Nicht in Kombination mit Headers!
Cell[1]
Column=
Deklaration einer bestimmten Spalte: Fix definierte Überschrift [Name], sowie XPath-Ausdruck für die Selektion von einem Wert relativ zu den Row-Nodes, oder absolute Selektion aller Werte.
[Name],/document/data
TmpFileEncoding=
Encoding der temporären Datei.
TmpFileEncoding= UTF8 | ANSI | OEM

TmpFileEncoding=UTF8
TmpFileColumn=
Existieren innerhalb einer XML-Datei Informationen als "eigenständiges XML", dann können diese Informationen durch Verwendung von TmpFileColumn ausgelesen werden. Für TmpFileColumn-Spalten wird jeweils der Name einer temporären Datei zurückgegeben. Diese enthält dann den eigentlich adressierten Inhalt.
Die temporäre Datei wird automatisch unter \Insyde\Tmp\ gespeichert.
TmpFileColumn= <analog Column>

TmpFileColumn=LoginResult,sec:LoginResult

XPath Funktionen

XPath stellt diverse Funktionen zur Verfügung. Alle von XPath 1.0 unterstützten Funktionen lassen sich innerhalb von Common.XmlQuery nutzen. Die aus unserer Sicht wichtigsten Funktionen:
Argument Beschreibung Mögliche Werte / Beispiele
@attributname
Durch die Angabe von @ gefolgt vom Attributnamen, kann direkt der Wert des Attributs aus dem xml-Element ausgelesen werden.
Wichtig
Wichtig
Sind Columns oder Rows definiert,muss mit einer absoluten XPath-Expression gearbeitet werden, ansonsten relativ.
Auslesen des Attributwerts von lastname aus dem xml-Element Customer.
Column=Addr.LastName,../../Customer/@lastname
text()
Mit dieser Funktion können Sie den Textinhalt eines xml-Elements auslesen.
Wichtig
Wichtig
Sind Columns oder Rows definiert,muss mit einer relativen XPath-Expression gearbeitet werden, ansonsten absolut.
[Name],text()
name()
Bezeichner eines xml-Elements auslesen.
name()
position()
Aktuelle Position abfragen/ausgeben.
ns:Row[position()>1]
concat()
Strings zusammenfügen.
concat(substring(ns:Data,9,2), '-', .....)