[Tustep-Liste] Scripting und Satz, Teil 1
Giorgio Giacomazzi
giorgio at giacomazzi.de
Mi Jun 15 16:26:38 CEST 2005
Liebe Tustep-Runde,
mehrere Beiträge reizen mich schon länger, eine Art Bilanz der
Diskussionen und Entwicklungen im Tustepland seit dem quo vadis-Thread
vor einem Jahr beizusteuern. Zeitmangel u.a. haben mich davon
abgehalten. Man muß aber die Feste feiern, wie sie fallen, und so
beginne ich nun mit einem Teilbeitrag zu "Scripting und Satz", der
direkt an die laufende Diskussion über die Zuordnung von Endtags anschließt.
Diese neue und alte Diskussion ist interessant, löst bei mir aber auch
Kopfschütteln aus. Interessant ist, daß Herr Trauth doch die
Scripting-Lösungen von Herrn Schälkle und von Herrn Derkits besser
findet. Ich verstehe dann jedoch nicht, warum er doch auf #kopiere
insistiert. Das ist keine gute Werbung für die, wie ich finde,
wichtigste Erneuerung in Tustep seit Jahren, die Einführung des modus
streams bei Dateizugriffen in der Makrosprache. (Vom Werbeeffekt für den
Makrokurs zu schweigen). Allerdings beurteilt Herr Leicht die Tragweite
dieser Erneuerung ähnlich wie ich.
Heute aber zur Ausgangsfrage zurück, wie man "Endtags richtig zuordnen",
also aus
1. <aUVW>text <aABC><aGHI>blahblah</a> blöhk<aMNO>mäh </a></a></a>
2. <aUVW>text <aABC><aGHI>blahblah</aGHI> blöhk<aMNO>mäh
</aMNO></aABC></aUVW>
machen kann, und zwar nur im ersten Gang. Es müsste doch auffallen, daß
die Endtags in 1. bereits richtig zugeordnet sind und in 2. lediglich
die Attribute (Großbuchstaben) in Elemente umgewandelt worden sind.
Damit aus 1. formal korrektes XML wird, braucht man hier keine Codezeile
in keiner Programmiersprache, sondern nur eine Ersetzung (z.B.
'<a(\w+)>' durch '<a tmp="\1">') und ein Root-Element:
1a. <doc>
<a tmp="UVW">text
<a tmp="ABC">
<a tmp="GHI">blahblah</a>
blöhk
<a tmp="MNO">mäh</a>
</a>
</a>
</doc>
Hier ist schon alles beisammen, was für eine Verarbeitung im Sinne
von XML nötig ist. Die Frage "Attribute oder Elemente" ist in der
XML/SGML-Welt eher eine Geschmacksfrage, wobei ich den Geschmack für
Elemente durchaus teile. Eine einfache Möglichkeit zur Umwandlung von
Attributen in Elemente bietet dann XSLT, eine weitere die
SAX-Programmierschnittstelle, u.a.m.. Aber, welche Möglichkeit man auch
immer wählt, wird immer parser-basiert gearbeitet. Das heißt: die Arbeit
des Zerlegens, die der treue tustepler mit kopiere und tricks unentwegt
machen will, entfällt und Zerlegungsfehler ebenfalls. Das einfache
XSL-Template
1b. <xsl:template match="a">
<xsl:element name="{@tmp}"><xsl:apply-templates/></xls:element>
</xsl:template>
fischt den Wert des Attributs "tmp" in jedem Element "a" und setzt es an
dessen Stelle, automatisch auch beim Endtag, da der XML-Parser den
Endtag selber "zuordnet":
2a. <doc>
<UVW>text
<ABC>
<GHI>blahblah</GHI>
blöhk
<MNO>mäh</MNO>
</ABC>
</UVW>
</doc>
Soviel fürs Erste, Fortsetzung folgt, sobald Zeit erlaubt.
Schöne Grüße aus einem weiteren Teil von Berlin,
Giorgio Giacomazzi
--
Giorgio Giacomazzi
Strelitzstr. 18
D-12105 Berlin
Tel.: 030-70176848
Fax: 0721-151440186
Mehr Informationen über die Mailingliste Tustep-Liste