institut für dokumentologie und editorik spring school 2. märz bis 5. märz 2010 zum einstieg, zur...

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

Upload: ute-geese

Post on 05-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

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>