Beispiel
1
Adressdaten in einer xml-Datei (Adresse.xml) mit "sprechender"
Struktur.
<?xml version="1.0" encoding="utf-8"?>
<Adressen>
<Adresse>
<Name>
<Vorname>Oskar</Vorname>
<Nachname>Petermann</Nachname>
</Name>
<Kommunikation>
<Mobile>079 123 45 67</Mobile>
</Kommunikation>
<Anschrift>
<Strasse>Schattenstrasse</Strasse>
<Nummer>222</Nummer>
<PLZ>3800</PLZ>
<Ort>Interlaken</Ort>
</Anschrift>
</Adresse>
<Adresse>
<Name>
<Vorname>Anton</Vorname>
<Nachname>Hürlimann</Nachname>
</Name>
<Kommunikation>
<Mobile>078 222 33 44</Mobile>
</Kommunikation>
<Anschrift>
<Strasse>Baumstrasse</Strasse>
<Nummer>111</Nummer>
<PLZ>3800</PLZ>
<Ort>Interlaken</Ort>
</Anschrift>
</Adresse>
</Adressen>
Beim Ausführen von Common.XmlQuery werden in
diesem Beispiel folgende drei Argumente verwendet:
SourceFile=Adresse.xml
Rows=//Adresse
Column=Vorname,Name/Vorname
Column=Name,Name/Nachname
Column=Strasse,Anschrift/Strasse
Column=Nr,Anschrift/Nummer
Column=Postleitzahl,Anschrift/PLZ
Column=Ort,Anschrift/Ort
Column=Handynummer,Kommunikation/Mobile
Rows: XPath auf
die Rows (also die Adress-Datensätze) welche sich im xml-Knoten "Adresse"
befinden.
Column: Bei den Column Argumenten wird zuerst das
Label gesetzt, danach (getrennd durch ein Komma) folgt der relative XPath
auf die xml-Knoten welche die entsprechenden Werte
enthalten.
Beispiel eines F-Script welches die obige xml-Datei
liest und in Form eines XFAS zurückgibt:
/headerreport
«XSER(reqXmlQuery:Common.XmlQuery)»
#
«XSER(reqXmlQuery:addArg=SourceFile=Adresse.xml)»
«XSER(reqXmlQuery:addArg=Rows=//Adresse)»
«XSER(reqXmlQuery:addArg=Column=Vorname,Name/Vorname)»
«XSER(reqXmlQuery:addArg=Column=Name,Name/Nachname)»
«XSER(reqXmlQuery:addArg=Column=Strasse,Anschrift/Strasse)»
«XSER(reqXmlQuery:addArg=Column=Nr,Anschrift/Nummer)»
«XSER(reqXmlQuery:addArg=Column=Postleitzahl,Anschrift/PLZ)»
«XSER(reqXmlQuery:addArg=Column=Ort,Anschrift/Ort)»
«XSER(reqXmlQuery:addArg=Column=Handynummer,Kommunikation/Mobile)»
#
«nXSER(reqXmlQuery:execute>resXmlQuery)\A»
#
# Spaltentitel setzen.
«XFAS(head=Vorname)»
«XFAS(head=Name)»
«XFAS(head=Strasse)»
«XFAS(head=Nr)»
«XFAS(head=Postleitzahl)»
«XFAS(head=Ort)»
«XFAS(head=Handynummer)»
# Loop über alle Rows, es werden die obigen sieben Spalten abgefüllt.
«/XFAS.GenItems»
/
/XFAS.GenItems
# Zähler9 = Rows
«nNO(9,NULL)»
«REPEAT(9)»
«nNO(9)»
# Abfüllen der Spalten-Werte
«XFAS(cell=«XRES(resXmlQuery:Vorname,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Name,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Strasse,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Nr,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Postleitzahl,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Ort,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:Handynummer,«NO(9,0)»)»)»
#
«nzNO(9,0)<«XRES(resXmlQuery:rows)\N»\N»«LOOP(9)»
/
Das Resultat (F-Script in LiveDocumentation
ausgeführt):
Beispiel
2
Adressdaten in einer xml-Datei mit der Struktur einer Tabelle.
Die einzelnen Datensätze (Adressen) sind dabei in "Rows" und "Cells"
abgelegt. Die erste "Row" enthält die Spaltentitel.
<?xml version="1.0" encoding="utf-8"?>
<Adressen>
<Row>
<Cell>Vorname</Cell>
<Cell>Nachname</Cell>
<Cell>Mobile</Cell>
<Cell>Strasse</Cell>
<Cell>Nummer</Cell>
<Cell>PLZ</Cell>
<Cell>Ort</Cell>
</Row>
<Row>
<Cell>Oskar</Cell>
<Cell>Petermann</Cell>
<Cell>079 123 45 67</Cell>
<Cell>Schattenstrasse</Cell>
<Cell>222</Cell>
<Cell>3800</Cell>
<Cell>Interlaken</Cell>
</Row>
<Row>
<Cell>Anton</Cell>
<Cell>Hürlimann</Cell>
<Cell>078 222 33 44</Cell>
<Cell>Baumstrasse</Cell>
<Cell>111</Cell>
<Cell>3800</Cell>
<Cell>Interlaken</Cell>
</Row>
</Adressen>
Beim Ausführen von Common.XmlQuery werden in
diesem Beispiel folgende vier Argumente verwendet:
-
SourceFile
-
Headers
-
Rows
-
Values
SourceFile=Adresse_2.xml
Headers=//Adressen/Row[1]/Cell
Rows=//Adressen/Row[position()>1]
Values=Cell
Headers: Die Spaltentitel befinden sich in
den Cells der ersten Row. Die erste Row wird durch [1]
angegeben.
Rows: Die Adressen (Adress-Datensätze) befinden
sich in den Rows 2 bis n. Dies wird durch [position()>1]
angegeben.
Values: Die Werte befinden sich in den
Cells.
Beispiel eines F-Script welches die obige xml-Datei liest
und in Form eines XFAS zurückgibt:
/headerreport
«XSER(reqXmlQuery:Common.XmlQuery)»
#
«XSER(reqXmlQuery:addArg=SourceFile=Adresse_2.xml)»
«XSER(reqXmlQuery:addArg=Headers=//Adressen/Row[1]/Cell)»
«XSER(reqXmlQuery:addArg=Rows=//Adressen/Row[position()>1])»
«XSER(reqXmlQuery:addArg=Values=Cell)»
#
«nXSER(reqXmlQuery:execute>resXmlQuery)\A»
#
# Spaltentitel setzen.
«XFAS(head=«XRES(resXmlQuery:col,1)»)»
«XFAS(head=«XRES(resXmlQuery:col,2)»)»
«XFAS(head=«XRES(resXmlQuery:col,3)»)»
«XFAS(head=«XRES(resXmlQuery:col,4)»)»
«XFAS(head=«XRES(resXmlQuery:col,5)»)»
«XFAS(head=«XRES(resXmlQuery:col,6)»)»
«XFAS(head=«XRES(resXmlQuery:col,7)»)»
# Loop über alle Rows, es werden die obigen sieben Spalten abgefüllt.
«/XFAS.GenItems»
/
/XFAS.GenItems
# Zähler9 = Rows
«nNO(9,NULL)»
«REPEAT(9)»
«nNO(9)»
# Abfüllen der Spalten-Werte
«XFAS(cell=«XRES(resXmlQuery:1,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:2,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:3,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:4,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:5,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:6,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:7,«NO(9,0)»)»)»
#
«nzNO(9,0)<«XRES(resXmlQuery:rows)\N»\N»«LOOP(9)»
/
Das Resultat (F-Script in LiveDocumentation
ausgeführt):
Beispiel
3
Adressdaten in einer xml-Datei mit der Struktur einer Tabelle.
Die Werte der einzelnen Datensätze (Adressen) sind dabei in "Columns" und
"Cells" abgelegt. Die erste "Cell" einer "Column" enthält jeweils den
Spaltentitel.
<?xml version="1.0" encoding="utf-8"?>
<Adressen>
<Column>
<Cell>Vorname</Cell>
<Cell>Oskar</Cell>
<Cell>Anton</Cell>
</Column>
<Column>
<Cell>Nachname</Cell>
<Cell>Petermann</Cell>
<Cell>Hürlimann</Cell>
</Column>
<Column>
<Cell>Mobile</Cell>
<Cell>079 123 45 67</Cell>
<Cell>078 222 33 44</Cell>
</Column>
<Column>
<Cell>Strasse</Cell>
<Cell>Schattenstrasse</Cell>
<Cell>Baumstrasse</Cell>
</Column>
<Column>
<Cell>Nummer</Cell>
<Cell>222</Cell>
<Cell>111</Cell>
</Column>
<Column>
<Cell>PLZ</Cell>
<Cell>3800</Cell>
<Cell>3800</Cell>
</Column>
<Column>
<Cell>Ort</Cell>
<Cell>Interlaken</Cell>
<Cell>Interlaken</Cell>
</Column>
</Adressen>
Beim Ausführen von Common.XmlQuery werden in
diesem Beispiel folgende vier Argumente verwendet:
-
SourceFile
-
Columns
-
Header
-
Values
SourceFile=Adresse_3.xml
Columns=//Adressen/Column
Header=Cell[1]
Columns: XPath auf die xml-Knoten welche
die entsprechenden Werte enthalten.
Header: Die Spaltentitel
befinden sich in der Cell der ersten Row einer jeden Column. Die erste Row
wird durch [1] angegeben.
Values: Die Werte befinden sich in
den Cells der Rows 2 bis n. Dies wird durch [position()>1]
angegeben.
Beispiel eines F-Script welches die obige xml-Datei
liest und in Form eines XFAS zurückgibt:
/headerreport
«XSER(reqXmlQuery:Common.XmlQuery)»
#
«XSER(reqXmlQuery:addArg=SourceFile=Adresse_3.xml)»
«XSER(reqXmlQuery:addArg=Columns=//Adressen/Column)»
«XSER(reqXmlQuery:addArg=Header=Cell[1])»
«XSER(reqXmlQuery:addArg=Values=Cell[position()>1])»
#
«nXSER(reqXmlQuery:execute>resXmlQuery)\A»
#
# Spaltentitel setzen.
«XFAS(head=«XRES(resXmlQuery:col,1)»)»
«XFAS(head=«XRES(resXmlQuery:col,2)»)»
«XFAS(head=«XRES(resXmlQuery:col,3)»)»
«XFAS(head=«XRES(resXmlQuery:col,4)»)»
«XFAS(head=«XRES(resXmlQuery:col,5)»)»
«XFAS(head=«XRES(resXmlQuery:col,6)»)»
«XFAS(head=«XRES(resXmlQuery:col,7)»)»
# Loop über alle Rows, es werden die obigen sieben Spalten abgefüllt.
«/XFAS.GenItems»
/
/XFAS.GenItems
# Zähler9 = Rows
«nNO(9,NULL)»
«REPEAT(9)»
«nNO(9)»
# Abfüllen der Spalten-Werte
«XFAS(cell=«XRES(resXmlQuery:1,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:2,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:3,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:4,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:5,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:6,«NO(9,0)»)»)»
«XFAS(cell=«XRES(resXmlQuery:7,«NO(9,0)»)»)»
#
«nzNO(9,0)<«XRES(resXmlQuery:rows)\N»\N»«LOOP(9)»
/
Das Resultat (F-Script in LiveDocumentation
ausgeführt):
Beispiel
4
Adressdaten in einer xml-Datei mit der Struktur einer Tabelle.
Die Werte der einzelnen Datensätze (Adressen) sind dabei in "Columns" und
"Rows" abgelegt. Die erste "Column" enthält dabei die Titel, jede weitere
"Column" enthält dann einen Datensatz (Adresse).
<?xml version="1.0" encoding="utf-8"?>
<Adressen>
<Column>
<Row>Vorname</Row>
<Row>Nachname</Row>
<Row>Mobile</Row>
<Row>Strasse</Row>
<Row>Nummer</Row>
<Row>PLZ</Row>
<Row>Ort</Row>
</Column>
<Column>
<Row>Oskar</Row>
<Row>Petermann</Row>
<Row>079 123 45 67</Row>
<Row>Schattenstrasse</Row>
<Row>222</Row>
<Row>3800</Row>
<Row>Interlaken</Row>
</Column>
<Column>
<Row>Anton</Row>
<Row>Hürlimann</Row>
<Row>078 222 33 44</Row>
<Row>Baumstrasse</Row>
<Row>111</Row>
<Row>3800</Row>
<Row>Interlaken</Row>
</Column>
</Adressen>
Beim Ausführen von Common.XmlQuery werden in
diesem Beispiel folgende vier Argumente verwendet:
-
SourceFile
-
Columns
-
Values
SourceFile=Adresse_4.xml
Columns=//Adressen/Column
Values=Row
Columns: XPath auf die xml-Knoten welche die
entsprechenden Werte enthalten.
Values: Die Werte befinden
sich in jeder Row.
Beispiel eines F-Script welches die obige
xml-Datei liest und in Form eines XFAS zurückgibt:
/headerreport
«XSER(reqXmlQuery:Common.XmlQuery)»
#
«XSER(reqXmlQuery:addArg=SourceFile=Adresse_4.xml)»
«XSER(reqXmlQuery:addArg=Columns=//Adressen/Column)»
«XSER(reqXmlQuery:addArg=Values=Row)»
#
«nXSER(reqXmlQuery:execute>resXmlQuery)\A»
#
# Spaltentitel werden hier entweder keine gesetzt, oder mit Buchstaben/Zahlen.
# Da nicht in jedem Fall bekannt ist wie viele Datensätze (Columns) in der xml-Datei enthalten sind,
# wird hier mit einem Repeat/Loop gearbeitet.
# Zähler8 = Columns
«nNO(8,NULL)»
«REPEAT(8)»
«nNO(8)»
«XFAS(head=Column_«NO(8,0)»)»
«nzNO(8,0)<«XRES(resXmlQuery:cols)\N»\N»«LOOP(8)»
# Loop über alle Resultat-Rows.
«/XFAS.GenItems»
/
/XFAS.GenItems
# Hier müssen zwei Repeat/Loops verschachtelt werden.
# Erster Loop: Werte pro Spalte.
# Zweiter Loop: Spalten.
#
# Zähler9 = Rows
«nNO(9,NULL)»
«REPEAT(9)»
«nNO(9)»
# Zähler8 = Columns
«nNO(8,NULL)»
«REPEAT(8)»
«nNO(8)»
# Abfüllen der Spalten-Werte
«XFAS(cell=«XRES(resXmlQuery:«NO(8,0)»,«NO(9,0)»)»)»
#
«nzNO(8,0)<«XRES(resXmlQuery:cols)\N»\N»«LOOP(8)»
«nzNO(9,0)<«XRES(resXmlQuery:rows)\N»\N»«LOOP(9)»
/
Das Resultat (F-Script in LiveDocumentation
ausgeführt):