43
titut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung Datenverarbeitung …mit XML und XSLT

Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Embed Size (px)

Citation preview

Page 1: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010

Zum Einstieg,zur Wiederholung

und zur Vertiefung:

DatengewinnungDatenanreicherungDatenverarbeitung

…mit XML und XSLT

Page 2: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 2

Der Plan- Wo das XML herkommt- Wie das XML schöner wird

- Regex

- XSLT

- Was hinten rauskommt- document()- Variablen- xsl:for-each-group- Visualisierung

Page 3: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 3

… wo das XML herkommt- XML aus Word

- Word ist schon XML- Übersetzung Typographie in Markup- Übergabe an OpenOffice

- XML aus OpenOffice- TEI OpenOffice Package

Page 4: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 4

Page 5: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 5

… wo das XML herkommt- XML aus Word

- Word ist schon XML- Übersetzung Typographie in Markup- Übergabe an OpenOffice

- XML aus OpenOffice- TEI OpenOffice Package- Pro und Kontra

- XML aus XML-Editoren- Author Mode

Page 6: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 6

Page 7: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 7

… wo das XML herkommt- XML aus Word

- Word ist schon XML- Übersetzung Typographie in Markup- Übergabe an OpenOffice

- XML aus OpenOffice- TEI OpenOffice Package- Pro und Kontra

- XML aus XML-Editoren- Author Mode

- Die Welt der spitzen Klammern

Page 8: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 8

XML-Daten verbessern- Ziel: Handarbeit vermeiden!- Einfaches Suchen&Ersetzen- Word-(OpenOffice)-Macros- Regular Expressions

- regex in XSLT- Datenanreicherung mit XSLT

Page 9: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 9

Regular Expressions (in Oxygen)

- Ausgangslage- Verschiedene Dialekte

- Maßgeblich: perlre

- Umfang der Implementierung?

- oXygen vs. XML-Schema vs. XSLT

- Syntax

Page 10: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 10

Regular Expressions (in Oxygen)- Syntax (nur das allerwichtigste)

. Beliebiges Zeichen

[] Zeichenklasse [0-9], [a-z] beliebige Ziffer bzw. Buchstabe () Gruppierung … kann später angesprochen werden

| oder [r | v] der Buchstabe r oder v

\ Maskierung \. tatsächlich ein Punkt und nicht beliebieges Zeichen

* Beliebige Häufigkeit .* beliebige Menge beliebiger Zeichen

+ Ein oder mehrmals [0-9]+ eine Zahl mit mindestens einer Stelle

? Ein oder kein Mal [0-9]? eine Ziffer oder nichts

Page 11: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 11

Regular Expressions (in Oxygen)- Syntax (schon nicht mehr so wichtig)

\d Ziffer

\w Buchstabe oder Ziffer

\s Whitespace-Zeichen

^ Anfang einer neuen Zeile

$ Zeilenende

\n Zeilenumbruch? Greediness ausschalten ([0-9].*\])*? [in Oxygen10 nicht

implementiert]

- … und weitere, siehe z.B. http://perldoc.perl.org/perlre.html

Page 12: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 12

Regular Expressions (in Oxygen)

- Ausgangslage (perlre)- Syntax- Das wichtigste: Gruppierte Muster bilden Variablen auf

die man beim Ersetzen zugreifen kann- Obacht: Zeilenorientierung, greediness- Beispiel 1 (einfache Seitenumbrüche)- Beispiel 2 (Ilg-Apparat)

Page 13: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 13

Regular Expressions (in Oxygen)- Beispiel 1

text [1ra] text [1rb] text [1va] text [1vb] text [2ra] text [2rb] text [2va]

- Beispiel 2<app n="1"></app><app n="X_*">Versus C. R., et ed. R. absunt ab omnibus…

<app n="2"></app><app n="X_1">animaeque, V.</app><app n="X_2">vacationem…

<app n="3"></app><app n="X_1">hylariV,.</app><app n="X_2">evangelici C. …

Page 14: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 14

Regular Expressions (in Oxygen)

- Ausgangslage (perlre)- Syntax- Das wichtigste: Gruppierte Muster bilden Variablen auf

die man beim Ersetzen zugreifen kann- Obacht: Zeilenorientierung, greediness- Beispiel 1 (einfache Seitenumbrüche)- Beispiel 2 (Ilg-Apparat)- Erweiterung: regex plus XPath- Möglichkeiten und Grenzen

Page 15: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 15

regex in XSLT- xsl:analyze-string

- xsl:matching-substring, xsl:non-matching-substring

- XPath-Funktionen- matches()

- replace()

- tokenize()

Page 16: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 16

Datenanreicherung per XSLT: copy-all-but …

- Ausgangslage- Grundtemplate

Page 17: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 17

Datenanreicherung per XSLT: copy-all-but …

- Grundtemplate

<xsl:template match="node() | @* | processing-instruction() | comment()"><xsl:copy>

<xsl:apply-templates select="node() | @* | processing-instruction() | comment()"/>

</xsl:copy>

</xsl:template>

- Was ist der Trick dahinter?

Page 18: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 18

Datenanreicherung per XSLT: copy-all-but …

- Ausgangslage- Grundtemplate

- Beispiel 1 (falsche Seitenumbrüche, copy-all-Beispiel1.xml)- … mit copy-all.xsl

- Beispiel 2 (mehrfache Apparate)- Lösung: multiple_apps.xl

Page 19: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 19

Datenanreicherung per XSLT: die document()-Funktion

- Anwendungsszenarien- Die document()-Funktion ( … und doc-available() )- Mögliche Fehlerquellen (String vs. Pfad; Namensräume)- Beispiel1 (Images hinzuziehen, regex-Beispiel1, images.xml, copy-all.xsl)- Beispiel2 (Geokoordinaten, locations.xml)

- Zum Verständnis: http://maps.google.com/maps/geo?q=Berlin&output=xml&sensor=false&key=ABQIAAAA6wyLPpbDp03tNqBX6NzZyRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRNs-JV0rqHP75bygTkcn_guLR8zg

- … was mit einem Google-Service geht, geht mit jeder wohlgeformten XHTML-Seite! (Beispiel geo-coord aus wp; Schriftsteller aus wp)

Page 20: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 20

Auch ein Single Source Prinzip: die result-document()-Funktion

- Anwendungsszenarien (siehe z.B. sdoe)

- <xsl:result-document href="Pfad/Dateiname">- … viele weitere Schalter …- Die Mächtigkeit von result-document

<xsl:for-each select="div">

<xsl:result-document href="html/teil-{@n}.html">

… alle weiteren Anweisungen

</xsl:result-document>

</xsl:for-each>

Page 21: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 21

Schwach, stark, nützlich: Variablen- Variablen in XML können nichts

- keine Veränderung

- nur lokal gültig (Übergabe als Parameter)

- Variablen in XML können vieles- Ständige Überschreibung in Schleifen

- Komplexe Inhalte durch Aufruf weiterer Templates

- Variablen in XML sind anders- Variablen können Kontextinformationen speichern

- Variablen können temporäre Knotenbäume enthalten

… Variablen können beliebige Bäume enthalten

Page 22: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 22

Wie ging es eigentlich jemals ohne?xsl:for-each-group

- Einsatzzwecke- Der xsl:for-each-group-Befehl

- @select, @group-by

- (@group-adjacent, @group-ending-with, @group-starting-with)

- current-group(), current-grouping-key()

- Beispiel1 (Fischer-Frage)- Refs rausziehen; mit copy-all-but + document zurückspielen

- Beispiel2 (Schriftsteller (herleiten!), Geburtskohorten)- geb-kohorten.xsl schreiben

Page 23: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 23

Visualisierung?

- Visualisierung wozu?- http://benfry.com/traces/

- Fake-Grafiken (?) mit HTML- Beispiel (Geburtskohorten)

- Eigene Grafiken mit SVG- Torten und anderes Eye Candy

- Beispiel (Verteilung der Hss. auf Sprachen)

- Google-Maps- Beispiel (Handschriftenlokalisierung)

Page 24: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 24

Page 25: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 25

XSLT-

produziert

Page 26: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 26

Page 27: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 27

Page 28: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 28

Visualisierung?

- Visualisierung wozu?- Fake-Grafiken (?) mit HTML

- Beispiel (Geburtskohorten)

- Eigene Grafiken mit SVG- Torten und anderes Eye Candy

Page 29: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 29

http://code.google.com/intl/de-DE/apis/charttools/

Page 30: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 30

Visualisierung?

- Visualisierung wozu?- Fake-Grafiken (?) mit HTML

- Beispiel (Geburtskohorten)

- Eigene Grafiken mit SVG- Torten und anderes Eye Candy

- Beispiel (Verteilung der Hss. auf Sprachen)

Page 31: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 31

<img src= "http://chart.apis.google.com/chart?chs=450x125 &amp;cht=p &amp;chd=t:{$ProzArab},{$ProzHeb},{$ProzLat} &amp;chl=arabic|hebrew|latin &amp;chdl={$ProzArab}%|{$ProzHeb}%|{$ProzLat}% " />

Simple Pie Chart …

Page 32: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 32

<img src="http://chart.apis.google.com/chart?chs=225x125 &amp;cht=gom &amp;chd=t:{$VollstaendigkeitFol} &amp;chl=Seitenangaben({$VollstaendigkeitFol}%) "/>

"Google-o-Meter"

Page 33: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 33

Visualisierung?

- Visualisierung wozu?- Fake-Grafiken (?) mit HTML

- Beispiel (Geburtskohorten)

- Eigene Grafiken mit SVG- Torten und anderes Eye Candy

- Beispiel (Verteilung der Hss. auf Sprachen)

- Google-Maps- Beispiel (Handschriftenlokalisierung)

Page 34: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 34

Google Maps per XSLT

Page 35: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 35

Google Maps per XSLT

- Drei Zutaten- HTML-Container

- Externe Javascripte

- Lokale Einstellungen (Javascript)- Key- Karte: Mittelpunkt, Zoomfaktor, Funktionalitäten- Marker: Position, Info-Fenster (HTML)

Page 36: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 36

Drei Zutaten …

1. <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAA6wyLPpbDp03tNqBX6NzZyRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRNs-JV0rqHP75bygTkcn_guLR8zg" type="text/javascript"></script>

2. <div id="map" style="width: 950px; height: 350px"></div>

Page 37: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 37

Drei Zutaten …

3. <script type="text/javascript"> //&lt;![CDATA[ if (GBrowserIsCompatible()) { function createMarker(point,html) { var marker = new GMarker(point); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); }); return marker; } // Display the map, with some controls and set the initial location var map = new GMap2(document.getElementById("map")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(48,-7),3);

Page 38: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 38

Drei Zutaten …3. // Set up markers with info windows

<xsl:for-each-group select="//location" group-by="."> <xsl:variable name="longlat" select="document('locations_geo.xml')// locations[.=current-grouping-key()]/@longlat"></xsl:variable> <xsl:variable name="breite" select="substring-before($longlat,' ')"/> <xsl:variable name="laenge" select="substring-after($longlat,' ')"/> <xsl:variable name="infotext" select="'//institution'"></xsl:variable> var point = new GLatLng(<xsl:value-of select="$breite"/>, <xsl:value-of select="$laenge"/>); var marker = createMarker(point,'<a href="#{current-group()[1]/../text()}"> <xsl:value-of select="current-grouping-key()"/></a>:<br/> <xsl:for-each-group select="current-group()" group-by="../../institution"> <xsl:value-of select="current-grouping-key()"/> <br/> </xsl:for-each-group>'); map.addOverlay(marker);</xsl:for-each-group> } //]]&gt; </script>

Page 39: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 39

… jetzt noch einmal grundsätzlich:zwei Basisstrategien in XSLT

- "pull-Ansatz"- ein template erledigt so viel wie möglich, indem es nacheinander

Teilaufgaben abarbeitet und sich dazu die benötigten Inhalte selbst holt- zunächst übersichtlich, einfach zu entwickeln, unabhängig von der

Reihenfolge der Elemente im xml, nicht modular, wird bei komplexen Dokumenten unübersichtlich

- "push-Ansatz"- templates betreffen möglichst immer nur bestimmte Elemente und

verweisen für deren Inhalte auf andere templates (xsl:apply-templates)- für Anfänger unübersichtlicher, abhängig von der Reihenfolge der Elemente

im xml, modularsierte templates werden in verschiedenen Kontexten verwendet, bei komplexen Dokumenten letztlich leichter wartbar

- in der Praxis häufig Mischung beider Strategien

Page 40: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 40

Basisstrategien in XSLT …

<!-- Pull --> <xsl:template match="/"> <xsl:for-each select="div"> <h1><xsl:value-of select="head"/></h1> <xsl:for-each select="p"> <p><xsl:value-of select="."></xsl:value-of></p> </xsl:for-each> </xsl:for-each> </xsl:template>

- Es gibt Situationen, die sich mit einem pull-Ansatz nicht lösen lassen! <p> enthalte <persName> …

Page 41: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 41

Basisstrategien in XSLT …

<!-- Push --><xsl:template match="/"> <xsl:apply-templates/></xsl:template><xsl:template match="div"> <xsl:apply-templates/></xsl:template><xsl:template match="head"> <h1><xsl:value-of select="."/></h1></xsl:template><xsl:template match="p"> <p><xsl:value-of select="."/></p></xsl:template>

Page 42: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 42

Basisstrategien in XSLT … <!-- Pull und Push -->

<xsl:template match="/"> <h1>Inhalte</h1> <ul> <xsl:for-each select="div"> <li><a href="#@n"><xsl:value-of select="head"/></a></li> </xsl:for-each> </ul> <xsl:apply-templates/> <xsl:template match="div"> <a name="@n"/> <xsl:apply-templates/> </xsl:template> <xsl:template match="head"> <h1><xsl:value-of select="."/></h1> </xsl:template> <xsl:template match="p"> <p><xsl:value-of select="."/></p> </xsl:template> </xsl:template>

Page 43: Institut für Dokumentologie und Editorik Spring School 2. März bis 5. März 2010 Zum Einstieg, zur Wiederholung und zur Vertiefung: Datengewinnung Datenanreicherung

Institut für Dokumentologie und Editorik

Spring School 2. März bis 5. März 2010Datengewinnung-, anreicherung, -verarbeitungFolie 43

Templates können sich auch wie Funktionen verhalten

<!– am Anfang muss der namespace kml deklariert sein -->

<xsl:call-template name="fetchGeo"> <xsl:with-param name="suche" select="Berlin"/>

</xsl:call-template>

<xsl:template name="fetchGeo"><xsl:param name="suche"/><xsl:variable name="key" select="'ABQIAAAA6wyLPpbDp03tNqBX6NzZyRT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRNs-JV0rqHP75bygTkcn_guLR8zg'"/><xsl:variable name="URL" select="http://maps.google.com/maps/geo? q={$suche}&amp;output=xml&amp;sensor=false&amp;key={$key}"/><xsl:value-of select="document($URL)//kml:coordinates"/>

</xsl:template>