XML Converter deutsch

START     XMLCNV     NSGMLS     PERL     DOWNLOADS     IMPRESSUM

 

Aktuelle Version: xml-converter neu!

Nutzungsbedingungen:


Lizenz:

Freeware


Nutzung:

privat und kommerziell


Kosten:

keine


Gewährleistung:

keine


Haftung:

keine


Weitergabe:

ja, unter den gleichen Bedingungen

Skriptsprache zur XML-Konvertierung und SGML-Konvertierung.

Für Linux, macOS und Windows.

Skriptsprache und Parser:


Dieses Werkzeug (XML Converter) besteht aus einen XML-/SGML-Parser und einer integrierten Skriptsprache.


Der Parser liest XML-Daten als sequentiellen Datenstrom. Die Daten werden dabei ereignisorientiert ausgewertet. Während des Lesens werden beim Auftreten von Start- und Endtags der Elemente oder beim Auftreten von Entitäten Ereignisse ausgelöst und die betreffenden Rückruffunktionen im Skript (Element-Handler, Entitäten-Handler) aufgerufen.


Die Ereignisse werden also parallel zum Einlesen ausgeführt. Nichtbehandelte Ereignisse und nichtbehandelte Datenbereiche werden unverändert in den Ausgabedatenstrom ausgegeben. Bestandteile der Daten, die Ereignisse auslösen, werden selbst nicht ausgeben. Für deren Ausgabe ist die Rückruffunktion im Skript verantwortlich.

Funktionsweise:


Beispieldokument:


<?xml version="1.0" ?>

<buch>

    <kapitel>
        <titel nr="1">Einf&#252;hrung</titel>

    </kapitel>

</buch>


                                                       

Beim Parsen des Dokumentes werden folgende Ereignisse in der angegebenen Reihenfolge ausgelöst (BEG kennzeichnet die Behandlung der Starttags, END für die Behandlung der Endtags):


ELEMENT buch (BEG)

ELEMENT kapitel (BEG)

ELEMENT titel (BEG)

ENTITY #252

ELEMENT titel (END)

ELEMENT kapitel (END)

ELEMENT buch (END)



Der Parser ruft bei jedem Ereignis die entsprechende Rückruffunktion (Element-Handler, Entitäten-Handler) auf. Wenn keine Rückruffunktion definiert ist, werden die ereignisauslösenden Daten unverändert ausgegeben.


Daten:


<?xml version="1.0" ?>

<buch>

<kapitel>
<titel nr="1">

Einf

&#252;

hrung

</titel>

</kapitel>

</buch>







 

Ereignisse:



ELEMENT buch (BEG)

ELEMENT kapitel (BEG)

ELEMENT titel (BEG)


ENTITY #252


ELEMENT titel (END)

ELEMENT kapitel (END)

ELEMENT buch (END)







 

Skript:


ELEMENT buch

  BEG=“<body>“

  END=“</body>“

ENDE


ELEMENT kapitel

  BEG=“<div>“

  END=“</div“

ENDE


ELEMENT titel

  BEG=“<h1>“

  END=“</h1>“

ENDE


ENTITY #252=“&uuml;“



Das Beispielskript:


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

<script>


ELEMENT kapitel

BEG=""

END=""

ENDE


</script>



entfernt die Start- und Endtags des Elementes kapitel:


<?xml version="1.0" ?>

<buch>

 

    <titel nr="1">Einf&#252;hrung</titel>

 

</buch>



Mit dem folgenden Beispiel:


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

<script>


ELEMENT buch

BEG="<html>"

END="</html>"

ENDE


ELEMENT kapitel

BEG=""

END=""

ENDE


ELEMENT titel

ATTLIST [nr=""]

BEG='<h1>'+VALUE([nr])+". "

END="</h1>"

ENDE


ENTITY #252="&uuml;"

</script>



wird ein komplettes HTML-Dokument erzeugt:


<html>

<h1>1. Einf&uuml;hrung</h1>

</html>


 

Copyright und Nutzungsbestimmungen:


Copyright © 2008-2018 Michael Seume


Die Software und die Dokumentation sind urheberrechtlich geschützt.


Die Software und die Dokumentation werden vom Autor unentgeltlich zur Verfügung gestellt. 


Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der Dokumentationen erhält, die Erlaubnis erteilt, diese uneingeschränkt zu benutzen.


Die Weitergabe ist unter den gleichen Bedingungen möglich. Die Software (xmlcnv) und die Lizenzbedingungen (lizenz.txt) müssen dazu unverändert weitergegeben werden.


Die Software und die Dokumentation werden ohne jede ausdrückliche oder implizierte Garantie bereitgestellt, einschließlich der Garantie zur Benutzung für den vorgesehenen oder einen bestimmten Zweck. Für Fehler in der Software und Schäden, die sich aus der Nutzung der Software ergeben, wird keine Haftung übernommen.


Alle genannten Marken, Produkt- und Firmennamen sind Eigentum ihrer Urheber.


Linux is a registered trademark of Linus Torvalds.


macOS Sierra a trademark of Apple Inc., registered in the U.S. and other countries.

Mac OS is a trademark of Apple Inc., registered in the U.S. and other countries.

Mac OS X El Capitan a trademark of Apple Inc., registered in the U.S. and other countries.

OS X is a trademark of Apple Inc., registered in the U.S. and other countries.


Windows is a registered trademark of Microsoft Corporation in the United States and other countries.

Bedienung:


Der XML Converter ist ein Konsolenprogramm.


Die Steuerung erfolgt über Kommandozeilenparameter. Zur Ausführung benötigen Sie ein Konvertierungsskript, welches Sie für Ihren Anwendungsfall programmieren müssen.


Der typische Anwendungsfall ist die Konvertierung von XML-Daten in ein Medienformat, wie z.B. HTML. Innerhalb des Skriptes definieren Sie auf einfachste Weise die Umsetzung der Elemente und Entitäten gemäß Ihrer DTD in die Auszeichnungsform des Zielformates.


Syntax:


xmlcnv eing skript ausg -s -w –q



eing

Eingabedateiname oder Dateispezifikation der zu konvertierenden Datei oder Dateien. Es dürfen Platzhalterzeichen ("*" und "?") in der Dateispezifikation eingegeben werden. Bei der Eingabe von Platzhalterzeichen werden alle Dateien, die dem Suchmuster entsprechen, konvertiert.


skript

Projektname. Es genügt der Skriptname ohne Erweiterung (z.B. "html"). Die Projektdatei sollte sich im gleichen Verzeichnis wie das Programm befinden. Die Standarderweiterung ist "xb".);


ausg

Ausgabedateiname oder Dateierweiterung der Ergebnisdateien. Bei Angabe nur einer Dateierweiterung, wird für jede Eingabedatei eine Ausgabedatei mit dieser Erweiterung erzeugt. Bei Angabe eines Dateinamens, wird eine Ausgabedatei erstellt, unabhängig davon, ob eine einzelne Eingabedatei angegeben wurde oder eine Dateispezifikation zur Bearbeitung mehrerer Eingabedateien. Bei Angabe einer Dateierweiterung wird für jede Eingabedatei eine Ausgabedatei im gleichen Ordner erzeugt. Bei Angabe einer Ausgabedatei wird diese, wenn kein Ordner angegeben wurde, im aktuellen Arbeitsverzeichnis ausgegeben. Bei Weglassen der Angabe ausg werden die Eingabedateien nur geprüft.


-s

schaltet die Dateisuche in Unterverzeichnissen ein


-w

aktiviert die zusätzliche Ausgabe von Fehlermeldungen direkt in den Ausgabedaten. Dieser Schalter ist für Webanwendungen zu empfehlen. Die Fehlermeldungen werden dann im Browser (Ausgabedaten HTML) angezeigt.


-q

minimale Konsolenausgabe


 

Hinweis:


Mehrere Parameter müssen jeweils mit einem Leerzeichen voneinander abgetrennt werden!

Hinweis:


Dateinamen oder Ordnernamen, die Leerzeichen enthalten, müssen komplett in Anführungszeichen gesetzt werden.

Systemanforderungen:


Linux

  1. +Linux (ubuntu 16.06 LTS) x32

  2. +Linux (ubuntu 16.06 LTS) x64


Mac

  1. +macOS High Sierra 10.13

  2. +macOS Sierra 10.12

  3. +OS X 10.11 (El Capitan)

  4. +OS X 10.10 (Yosemite)

  5. +OS X 10.9 (Mavericks)

  6. +OS X 10.8 (Mountain Lion)

  7. +Mac OS X 10.7 (Lion)

  8. +Mac OS X 10.6 (Snow Leopard) x32 und x64

  9. +Mac OS X 10.5 (Leopard) x32 und x64

  10. +Mac OS X 10.4 (Tiger) x32


Windows

  1. +Windows 10 x32 und x64

  2. +Windows 8 x32 und x64

  3. +Windows 7 x32 und x64

  4. +Windows XP (Version 5.2) x64

  5. +Windows XP (Version 5.1) x32

Ein Beispiel:


Das Skript basiert intern selbst auf XML. Es durchläuft bei der Prüfung den gleichen Parser wie die Daten.

Auf eine explizite Auszeichnung in der XML-Syntax, also mit Tags wie <ELEMENT> wurde aber verzichtet. Das Skript kann aber auch als XML-Dokument erstellt werden:


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

<script>


</script>



Die wichtigsten Befehle sind BEG und END in der Syntax einer Zuweisungsoperation:


BEG="..."

END="..."



Es handelt sich hierbei um Zuweisungen an den Datenstrom des Parsers. Der Parser durchläuft alle Elemente, Zeichendaten und Entitäten des Dokumentes und erzeugt einen Datenstrom der enthaltenen Zeichendaten.

Diesem Datenstrom können an den Elementgrenzen, also dem Starttag und dem Endtag, Daten hinzugefügt werden. BEG steht für den Datenstrom beim Erreichen des Starttags und END für den Datenstrom beim Erreichen des Endtags.

Die Zuweisungsoperationen des Element-Handler autor:


ELEMENT autor

BEG='<p class="autor">'

END="</p>"

ENDE



fügt an Stelle des Starttags <autor> den Text <p class="autor"> ein und an Stelle des Endtags den Text </p>. Dieses Skript kann bei identischem Ergebnis auch wie folgt geschrieben werden:


ELEMENT autor

BEG="<p "

BEG="class="

BEG=CHR(34)

BEG="autor"

BEG=CHR(34)

BEG=">"

END="</"

END="p>"

ENDE



Da BEG und END von getrennten Ereignissen angesteuert werden, werden diese nie zeitgleich ausgeführt. Bei leeren Elementen wird nur das Ereignis für den Starttag, also BEG, ausgeführt!

Die Ausführung der Anweisungen erfolgt sequentiell jeweils für BEG und für END getrennt. Das folgende Beispiel erzeugt immer noch das gleiche Ergebnis wie das vorhergehende Beispiel:


ELEMENT autor

BEG="<p "

END="</"

BEG="class="

BEG=CHR(34)

BEG="autor"

BEG=CHR(34)

END="p>"

BEG=">"

ENDE



Derartige Zerstückelungen sollten aber zu Gunsten der besseren Lesbarkeit vermieden werden.

Im folgenden Beispiel wird eine Element-Handler für das Element autor definiert. Für den Beginn (BEG) des Elementes wird der Starttag <p class="autor"> in die Ausgabe eingefügt und für das Ende (END) des Elementes der Endtag </p>. Der Element-Handler wird mit ENDE beendet.


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

<script>


ELEMENT autor

BEG='<p class="autor">'

END="</p>"

ENDE


</script>



Da das Skript selbst auf XML basiert, kann es auch so geschrieben werden:


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

<script>


ELEMENT

autor

BEG

=

'<p class="autor">'

END

=

"</p>"

ENDE


</script>



oder so


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

<script>ELEMENT autor BEG='<p class="autor">' END="</p>" ENDE</script>


 

Wir erstellen ein Skript:


Die Programmierung einer Konvertierungsanwendung benötigen Sie einen Texteditor, eine DTD und Beispieldokumente (-Instanzen).

Verwenden Sie für XML-Skripte einen Texteditor im UTF-8 Modus. Wenn Sie ein Skript für SGML erstellen, verwenden Sie bitte eine Texteditor im "normalen Textmodus" (ASCII, US-ASCII bzw. ANSI).


  1. 1.Anlegen der Skript-Datei


Erstellen Sie eine neue Skriptdatei mit einem Texteditor und fügen Sie folgenden Text ein:


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

<script>


</script>



  1. 1.Elementregeln


Anhand der DTD können Sie das Grundgerüst des Skriptes (siehe auch Skript) aufbauen. Für jedes Element Ihrer DTD (z.B. <!ELEMENT kapitel titel ...>) erstellen Sie ein passendes Elementhandle (siehe Element-Handler bzw. ELEMENT):


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

<script>


ELEMENT kapitel

ENDE


ELEMENT titel

ENDE

</script>



Mit den Konvertierungsregeln wird das Zielformat der Strukturkonvertierung gesteuert. Die grundlegenden Anweisungen dazu sind die BEG- und END-Anweisung.

Die BEG-Anweisung gibt alle angegebenen Daten am Beginn des betreffenden Elementes aus, wobei bei mehreren Anweisungen die Ausgabe in Reihenfolge der Abarbeitung erfolgt. Die END-Anweisung steuert Ausgaben am Ende des jeweiligen Elementes.


Ein einfaches Beispiel ist dafür die Umsetzung von Hervorhebungen:


ELEMENT fett

BEG='<b>'

END='</b>'

ENDE



Durch Kontextabfragen lassen sich sehr einfach die betreffende Formatierungen ermitteln. So werden im Beispiel die Überschriften (titel) in der ersten Ebene (kapitel) mit h1 gekennzeichnet, die in der zweiten Ebene mit h2 und alle anderen mit h3:


ELEMENT titel

IF IN kapitel IN kapitel IN kapitel

  BEG="<h3>"

  END="</h3>"

ELSEIF IN kapitel IN kapitel

  BEG="<h2>"

  END="</h2>"

ELSE

  BEG="<h1>"

  END="</h1>"

ENDIF

ENDE



  1. 1.Entitätenregeln


Am Ende des Skriptes fügen Sie die Entitäten-Konvertierungsregeln hinzu, welche jeweils für jede in der DTD definierte Entität die passende Zielform definiert (Für das Zielformat HTML können viele Entitäten 1:1 übernommen werden. Andere Zielformate erfordern aber ein gezieltes Umkodieren der Entitäten!):


ENTITY auml="&#228;"