ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ...
ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ...
ein generischer Ansatz zur Layout-Spezifikation - Lehr- und ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4. Rahmenbedingungen <strong>ein</strong>er ImplementierungAnstatt dem pfadorientierten XPath verwendet fxt <strong>ein</strong>en ganz anderen <strong>Ansatz</strong>: fxgrep [3], das aufregulären Ausdrücken für Bäume basiert.Abbildung 4.2 zeigt das XSLT-Beispiel aus Abbildung 4.1 als Transformations-<strong>Spezifikation</strong> für fxt./*//section/title/""defaultABBILDUNG 4.2.: Beispiel für Transformationen in fxt4.3.1.3. HaXmlHaXml [25] implementiert zwei gr<strong>und</strong>legend unterschiedliche Ansätze, mit denen XML-Dokument<strong>ein</strong> der funktionalen Programmiersprache Haskell bearbeitet werden können. Der <strong>ein</strong>e stellt <strong>ein</strong>e Bibliothekvon Funktionen <strong>zur</strong> Verfügung, mit der alle möglichen XML-Dokumente selektiert, generiert<strong>und</strong> transformiert werden können. Der andere implementiert <strong>ein</strong>e Umgebung, in der aus <strong>ein</strong>er vorhandenenDTD Definitionen für Haskell-Datentypen abgeleitet <strong>und</strong> Funktionen <strong>zur</strong> Verfügung gestelltwerden, die die XML-Dokumente, die der DTD entsprechen, als typisierte Werte <strong>ein</strong>lesen <strong>und</strong> schreiben.Hier soll nur der erste <strong>Ansatz</strong> betrachtet werden. Der zweite ist zwar außer Frage sehr mächtig, allerdingsfehlt ihm – naturgemäß – jede Möglichkeit, gesondert Transformationen deklarativ zu definieren.Wenn im folgenden von HaXml gesprochen wird, ist damit immer der erste <strong>Ansatz</strong> gem<strong>ein</strong>t.HaXml ist nicht wie XSLT oder fxt regelbasiert, sondern besitzt <strong>ein</strong> Konzept, das auf Filtern <strong>und</strong>Kombinatoren (combinators) basiert.An Filtern gibt es sogenannte predicate and selection filters, das sind Filter, die Inhalte des XML-Quelldokuments annehmen <strong>und</strong> bestimmte Inhalte davon <strong>zur</strong>ückliefern, <strong>und</strong> construction filters, dassind Filter, die Inhalte annehmen <strong>und</strong> daraus Teile des XML-Zieldokuments erzeugen (wie z.B. Elemente,Attribute oder Textinhalte).Predicate filters sind z.B. keep, der jeden Inhalt <strong>ein</strong>fach durchreicht, tag , der nur dasElement mit dem Namen <strong>zur</strong>ückliefert oder txt, der nur den Textinhalt <strong>ein</strong>es Elements<strong>zur</strong>ückgibt. Construction filters sind z.B. mkElem, der <strong>ein</strong> Element erzeugt oder replaceAttrs,der Attribute <strong>ein</strong>es Elements ersetzt.Mit den Kombinatoren werden mehrere Filter verknüpft. Der <strong>ein</strong>fachste ist ’o’, die sogenannte irishcomposition, bei dem der auf der linken Seite stehende Filter auf die Ergebnisse des auf der rechtenSeite stehenden angewandt wird.46