Next: Modulprogrammierung
Up: Anlegen eines neuen Workflows
Previous: workflow_schleifenstart-Elemente (i.d.R. als Kinder
- 1.
- Das XML-Struktur des XML-Eingabe-File wird geparst und ein Baum aus
Elementen und Attributen im Speicher aufgebaut, wobei im Normalfall
einem XML-Element ein Element im berechneten Baum entspricht. Die
Attribute für ein solches Element werden dabei aus den XML-Attributen
des ursprünglichen XML-Elements gewonnen. Konkret bedeutet dies:
- (a)
- XML-Attribute, derren Namen die Struktur ``alias:<aliasname>''
haben, werden nicht als Attribute im entstehenden Element, sondern
als Alias-Definitionen für das im XML-Attributwert genannte Attribut
diese Elements aufgefasst.
- (b)
- XML-Attribute, derren Namen die Struktur ``aliased:<attributname>''
haben, werden auch nicht unmittelbar mit diesem Attributamen in das
Baum-Element übernommen, sonder mit dem Attributnamen ``<attributname>'',
wobei gespeichert wird, dass im Wert dieses Attributs Aliase für Attribute
anderer Elemente vorkommen können, die später aufgelöst werden.
- (c)
- Alle sonstigen XML-Attribute werden einfach als Attribute des Baum-Elementes
übernommen. Konflikte zwischen Baum-Attributen, die direkt mit ihrem
Namen ``<attributname>'' als XML-Attribute vorkommen und als
``aliased:<attributname>'', sollten vermieden werden.
- (d)
- Die XML-Element-Hierarchie wird im wesentlichen übernommen. Fast alle
XML-Elemente werden zu Baum-Elementen. Es gibt nur eine Ausnahme:
Um dem Benutzer das Editieren (mit nicht-XML-fähigen Editoren) von
Attributwerten, die Sonderzeichen wie v.a. ``<'' und ``>''
enthalten (manche Module z.B. können SQL-Queries als Parameter haben
und < und > dienen dort dem Verglich) zu erleichtern besteht aber
die Möglichkeit einen Wert, der später im eingelesenen Element/Attribut-Baum
ein Attribut eines Elementes darstellen soll, nicht als XML-Attribut
des entsprechenden XML-Elementes, sondern als ein spezielles Kind-Element
dieses XML-Elementes darzustellen. Der Element-Inhalt eines solchen
speziellen XML-Elementes sollte einfach der gewünschte spätere Attributwert
(als Text, d.h. kann v.a. mit ``<![CDATA[`` und ``]]>''
umklammert sein, um beliebigen Text für das Attribut darin zu ermöglichen)
sein um keine weiteren XML-Elemente enthalten. Der spezielle XML-Element-Name
ist ``A'' und mit dem XML-Attribut ``name'' wird der Name
des gewünschten Attributs angegeben:
z.B.: '<schritt attributname1=''wert1''> <A name=''attributname2''>
wert2</A> </schritt>'
wäre gleichwertig zu '<schritt attributname1=''wert1'' attributname2=''wert2''></schritt>'
Allerdings müssen bei zweiten Lösung in wert2 sämtliche Zeichen, die
nicht in XML-Attributwertenerlaubt sind (v.a. ``<'',''>'')
als XML-Charakterreferenzen geschrieben werden. Bei der ersten Lösung
ist statt dessen in wert2 eine CDATA-Umklammerung des Textes, der
die nicht erlaubten Zeichen enthält, möglich.
Dem Benutzer bleibt überlassen, ob er diese spezielle Möglichkeit
der Angabe von Baum-Attributen benutzt.
- 2.
- Ist der Element/Attribut-Baum aus der XML-Eingabe aufgebaut worden,
werden bei Elementen fehlende Attribute, die aus der Struktur ersichtlich
sind, wie oben beschrieben ergänzt.
- 3.
- Der um fehlende Attribute ergänzte Element/Attribut-Baum wird in SQL-INSERT-Statements
umgewandelt. Dabei wird i.a. ein Element zu einem SQL-INSERT in eine
DB-Relation und seine Attributwerte zu den Tupel-Attributwerten der
Relation. (siehe Tabellen oben).
Die oben beschriebenen Regeln für die automatische Ergänzung von Attributen
eines Elements, z.b. hierarchischer Strukturinformation oder Nummerierungen,
sind in einer perl-Library, dem Skript ``xml2sqlinsert-definitions-workflow.pl"
im Ordner ``Skripte'' in der Variablen ``@node_defaultvalues''
definiert.
In dieser Library sind ebenso die Regeln für die Übersetzung der XML-Elemente
in DB-Relationen bzw. XML-Attribute in DB-Attribute'' in der Variablen
``@node2table'' zu finden.
Das Konverter-Skript ``wfcreate.pl'' übernimmt diesen ganzen
Konvertierungsvorgang. Es liegt im Unterverzeichnis ``Skripte''.
Zur Lauffähigkeit des Skriptes muss das Perl-Paket ``expat''
(Version >= 1.95-1) zum Parsen von XML-Daten installiert sein. ``wfcreate.pl
`` wird mit der XML-Eingabe-Datei als Parameter aufgerufen und
gibt auf die Standardausgabe die SQL-Anweisungen zum Abspeichern des
neuen Workflows in der Datenbank aus. Diese Anweisungen können direkt
verwendet werden, um den neuen Workflow anzulegen. Ein Beispiel für
eine Workflow-Konfiguration befindet sich in der Datei ``SQL/workflow_tgi.xml''.
Next: Modulprogrammierung
Up: Anlegen eines neuen Workflows
Previous: workflow_schleifenstart-Elemente (i.d.R. als Kinder
Copyright Munich Network Management Team