[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