F-Script Funktion: XML

Die XML Sprachelemente (Funktionen/Befehle) ermöglichen das Erstellen von XML-Files via F-Script.
Der zugehörige F-Script Befehl lautet: XML
Notiz
Notiz
Zur Verwendung in F-Scipt Blöcken siehe hier: XML
Funktion
Parameter
Beschreibung
XML
 
XML(Encoding:ANSI)
XML(Encoding:UTF8)
Rückgabe:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes?">
<?xml version="1.0" encoding="utf-8" standalone="yes?">
Achtung
Achtung
Ein leerer Aufruf des Befehls XML wie beispielsweise «WRITE(1: «XML»)» ist unbedingt zu vermeiden!
Text: Text
Rückgabe des konvertierten Textes.
- Folgende Zeichen werden xml-konform umgewandelt:
& wird zu &amp;
< wird zu &lt;
> wird zu &gt;
Zeilenumbruch: char(10) wird zu &#xA;
« F-Script Start-Befehl: char(174) wird zu &#xAE
» F-Script End-Befehl: char(175) wird zu &#xAF
Achtung
Achtung
Ab v15.10.02.64 bzw. v15.10.03.130 werden Quotes generell escaped.
Das hat u.U. zur Folge, dass Sie bestehende F-Scripts anpassen müssen.
Siehe auch Hinweis unter Code Beispiele.
Elem: Tag-Name, Text
Rückgabe:
<Tag-Name>Konvertierter Text</Tag-Name>
Der Text wird dabei analog «XML(Text:...)» konvertiert.
Notiz
Notiz
Der Text welchen Sie dem Befehl «XML(Elem:<TagName>,Text)» übergeben wird analog dem Befehl «XML(Text:<Text>)» konvertiert.
Beachten Sie, dass eine erneute Konvertierung innerhalb dieses Befehls (z.B. mittels «XML(Text:...)») zu falschen Ergebnissen führt.
Elem: Tag-Name
Rückgabe: Leeres Tag
<Tag-Name/>
STag: Tag-Name
Rückgabe: Start-Tag
<Tag-Name>
STag: Tag-Name, Tag-Erweiterung
Rückgabe: Start-Tag mit Erweiterung
<Tag-Name,Tag-Erweiterung>
ETag: Tag-Name
Rückgabe: End-Tag
</Tag-Name>
Comm: Kommentar
Rückgabe: In ANSI-Zeichensatz konvertierter Kommentar.
<!-- Konvertierter Kommentar wie oben unter Text: Text -->
Die F-Script Befehlszeichen werden in xml-konforme "Ersatzzeichen" umgewandelt.
char(174) « wird umgewandelt in {
char(175) » wird umgewandelt in }
Wichtig
Wichtig
Die Schlüsselworte sind in der obigen Aufstellung fett geschrieben und case-sensitive.
Die maximale Grösse eines F-Script Elementes beträgt 4096 Zeichen.
Encoding: Beim Schreiben von xml-Files, muss das Encoding angegeben werden! Also z.B. WRITE(1:UTF8... oder WRITE(1:ANSI...

Beispiel

/headerreport
# Beispiel zum Schreiben eines XML-Files in UTF-8
«WRITE(1:DIRECT ..\tx\test_utf8.xml)»
«WRITE(1:UTF8 «XML(Encoding:UTF8)»)»
«WRITE(1:UTF8 «XML(STag:Country)»)»
«WRITE(1:UTF8 «XML(STag:CountryCode,Ländercode="CH")»41«XML(ETag:CountryCode)»)»
«WRITE(1:UTF8 «XML(STag:CountryState,Kanton="NW")»«XML(Text:Nidwalden)»«XML(ETag:CountryState)»)»
«WRITE(1:UTF8 )»
«WRITE(1:UTF8 <![CDATA[)»
«WRITE(1:UTF8 «XML(STag:City)»«XML(Text:Stans)»«XML(ETag:City)»)»
«WRITE(1:UTF8 «XML(STag:City)»«XML(Text:Stansstad)»«XML(ETag:City)»)»
«WRITE(1:UTF8 «XML(STag:City)»«XML(Text:Hergiswil)»«XML(ETag:City)»)»
«WRITE(1:UTF8 ]]>)»
«WRITE(1:UTF8 )»

«WRITE(1:UTF8 «XML(STag:XmlElement)»)»
«WRITE(1:UTF8 «XML(Text:Dies ist ein Text mit verbotenen Zeichen: < >)»)»
«WRITE(1:UTF8 Umlaute wie Äöü können neu direkt ohne Kapselung in einem XML-Befehl geschrieben werden!)»
«WRITE(1:UTF8 Und hier kommt der Schneemann: «UC-CHR($2603)»)»
«WRITE(1:UTF8 «XML(ETag:XmlElement)»)»
«WRITE(1:UTF8 «XML(ETag:Country)»)»
«WRITE(1:CLOSE)»
/ 

Ausgabe

Ansicht des mit dem obigen F-Script Beispiel erzeugten xml-Files in einem Editor:
xml-utf8_output.jpg

Arbeiten mit XML - Code-Beispiele

Die nachfolgenden Beispiele sind als F-Script Fragmente zu verstehen. Soll beispielsweise ein File Adresse.xml erstellt werden, sind die XML-Befehle zusammen mit einem WRITE zu verwenden. Natürlich muss in diesem Fall zuerst ein WRITE-Kanal geöffnet und ein File erstellt werden. Diese Code-Zeilen werden hier nicht dargestellt.
Wichtig
Wichtig
Beim Schreiben von xml-Files ist immer das Encoding anzugeben!
WRITE(1:UTF8... oder WRITE(1:ANSI...
Notiz
Notiz
Diese Funktion steht auch innerhalb von F-Script Blöcken zur Verfügung.
# Kommentarzeile schreiben
«WRITE(1:UTF8 «XML(Comm:Ausgeben von Adressdaten)»)»
# Name und Vorname ausgeben
«WRITE(1:UTF8 «XML(Elem:Name, «NAME»)»)»
«WRITE(1:UTF8 «XML(Elem:Vorname, «VORNAME»)»)»
# Separates Tag ausgeben
«WRITE(1:UTF8 «XML(STag:Übergabedatum)»)»
«WRITE(1:UTF8 «XML(Text:Letztes übergabedatum: 16.10.2009)»)»
«WRITE(1:UTF8 «XML(ETag:Übergabedatum)»)»
Notiz
Notiz
Falls xml-Tags direkt mit Werten versehen werden müssen, beachten Sie bitte, dass Quotes generell escaped werden.
# Im xml-File soll nachfolgende Zeile bzw. Struktur geschrieben werden:
# <CountryCode isoCountryCode="CH">41</CountryCode>
«WRITE(1:UTF8 «XML(STag:CountryCode,isoCountryCode="CH")»41«XML(ETag:CountryCode)»)»
# 
# Im xml-File soll nachfolgende Zeile bzw. Struktur geschrieben werden:
# <State StateCode="ZH">Zürich</State>
«WRITE(1:UTF8 «XML(STag:State,StateCode="ZH")»«XML(Text:Zürich)»«XML(ETag:State)»)»
# 
# Innerhalb eines xml-Tags soll ein Attribut dynamisch verwendet werden.
# Dabei ist nicht klar, ob das Attribut Quotes enthält.
# Das Attribut muss deshalb innerhalb von Quotes mit XML(Text... ausgegeben werden.
«WRITE(1:UTF8 «XML(STag:DocumentHeader,Betrag='«XML(Text:«AUF-TOTAL$\N,.00t'»)»')»«XML(ETag:DocumentHeader)»)»
# 
# Verwenden einer X-Variable mit Quotes:
«X(Artikel=<100" LCD>)»
# Verwenden dieser Variable beim Schreiben eines XML-Files:
«WRITE(1:UTF8 «XML(STag:Artikel,attribut="«XML(Text:«X(Artikel)»)»")»«XML(ETag:Artikel)»)»
Achtung
Achtung
Ab v15.10.02.64 bzw. v15.10.03.130 werden Quotes neu generell escaped.
Das hat u.U. zur Folge, dass Sie bestehende F-Scripts anpassen müssen.
Falsch
«WRITE(1:UTF8 «XML(STag:CountryCode,«XML(Text:Ländercode="CH")»)»41«XML(ETag:CountryCode)»)»
Richtig
«WRITE(1:UTF8 «XML(STag:CountryCode,Ländercode="CH")»41«XML(ETag:CountryCode)»)»
# 
«WRITE(1:UTF8 «XML(STag:DocumentHeader,Betrag="100'000.00")»«XML(ETag:DocumentHeader)»)»
oder
«WRITE(1:UTF8 «XML(STag:CountryCode,Ländercode="«XML(Text:CH)»")»41«XML(ETag:CountryCode)»)»
# 
«WRITE(1:UTF8 «XML(STag:DocumentHeader,Betrag='«XML(Text:«AUF-TOTAL$\N,.00t'»)»')»«XML(ETag:DocumentHeader)»)»