Daten- und Metadatenstandards Wintersemester 2011 / 2012 10. Januar 2012 Wiederholung
Seminarverlauf Vorlesungsbeginn: 10.10.2011 Vorlesungsende: 03.02.2012 Ferien-/Feiertage: 01.11.2011 (Allerheiligen) 23.12.2011-06.01.2012 (Weihnachtsferien) Seminartermine: 18. Oktober Organisatorisches Daten, Information, Metadaten was ist das? 25. Oktober: XML 01. November: fällt aus 08. November: XML II 15. November: XML + Schema (DTD, XML Schema, RelaxNG) 22. November: DTD 29. November: XML + CSS 06. Dezember: XPath und XSLT 13. Dezember: XPath und XSLT II: Von XHTML nach X / TI 20. Dezember: fällt aus 10. Januar: Wiederholung / Klausurvorbereitung 17. Januar / 24. Januar: Dublin Core, Semantic Web, MAB, MTS/MODS 31. Januar: Klausur
I. Grundbegriffe
Wissenspyramide Quelle: http://www.wzl.rwth-aachen.de/de/ebecb2e7d199a686c125736f00454c10/11_v_deu.pdf
Arbeitsdefinitionen Daten (Plural: Daten, Singular: Datum): digitale Repräsentation von Information. Konkret: eine Folge digitaler Zeichen: 1001 0010 1010 0110 Information: Datum bzw. sind Daten mit inhaltlicher Bedeutung. Semantisierte Daten Beispiele: Der QR-Code repräsentiert die Aussage <<Herzlich Willkommen beim IT-Zertifikat! Ich freue mich auf ein schönes, spannendes, anregendes Semester mit Ihnen!>> Die Binärfolge 1001 0010 1010 0110 bedeutet <Hallo>.
Repräsentation Repräsentation Information Daten Abstraktion Zwei Prozesse: Repräsentation und Abstraktion: Repräsentation: Die Bedeutung, d.h. der Informationsgehalt von Daten ergibt sich erst aus der Kenntnis der benutzten Repräsentation. Repräsentation: äußere Form der Darstellung (von Information) Abstraktion: Prozess der Interpretation von Daten Informationsgewinnung
Information / Daten: Aphex Twin
Metadaten /-informationen Informationen (bzw. Daten), die andere Informationen (bzw. Daten) beschreiben.
II. Text / XML Wohlgeformtheit und Gültigkeit
Text?
XML & Co. Grundidee (wichtig!): Strikte Trennung von Inhalt (XML) Struktur (DTD / Schema) Darstellung (CSS / XSLT)
XML: Aufbau <nachrichtensammlung> <nachricht> <sender>jan Wieners</sender> <empfaenger> Kursteilnehmerinnen und teilnehmer Daten- und Metadatenstandards Wintersemester 2011/12 </empfaenger> <inhalt>hallo!</inhalt> </nachricht> </nachrichtensammlung>
XML: Visualisierung <nachrichtensammlung> <nachricht> <sender>jan Wieners</sender> <empfaenger> Kursteilnehmerinnen und teilnehmer Daten- und Metadatenstandards Wintersemester 2011/12 </empfaenger> <inhalt>hallo!</inhalt> </nachricht> </nachrichtensammlung> nachrichtensammlung nachricht sender empfaenger inhalt
XML: Anforderungen Wohlgeformtheit XML-Dokumente müssen wohlgeformt (well-formed) sein, d.h. sie müssen den Regeln der XML-Syntax genügen (Auszug aus den Syntax-Regeln): Jedes XML-Dokument verfügt über IN Wurzelelement. Jedes lement muss ein Start- und ein ndtag besitzen lemente dürfen geschachtelt sein, dürfen sich aber nicht überlappen ( Zwiebelschema beachten!). in lement darf nicht zwei Attribute mit dem gleichen Namen besitzen. Groß- und Kleinschreibung beachten! [ ] in XML-Dokument ist wohlgeformt ( well formed ), wenn es die Regeln von XML einhält. in wohlgeformtes Dokument kann geparsed, (z.b. mit XPath) navigiert und mit anderen XML-Standards verarbeitet werden
Wohlgeformt vs. gültig Gültigkeit in XML-Dokument ist gültig ( valid ), wenn es den Regeln eines Schemas entspricht. Strukturen und Inhalte eines gültigen XML- Dokuments können leichter kontrolliert, konsistent gehalten und verarbeitet werden. in Schema beschreibt ein Modell explizit. Strukturdefinition per Schemata / Gültigkeit von XML-Dokumenten DTD XML Schema RLAX NG Schematron
Dokumenttypdefinitionen (DTD) lemente bzw. Tags definieren inzelnes lement: <!LMNT titel (#PCDATA)> Verschachtelung von lementen repräsentieren: <!LMNT bild (titel, url, abstract, person+, bauwerk+)> Bitte beachten / merken: + (Pluszeichen): Das Tag muss mindestens einmal vorkommen, darf aber auch öfter im XML-Dokument angegeben werden.? (Fragezeichen): Das lement darf einmal vorkommen, muss jedoch nicht im XML-Dokument angegeben sein. * (Sternchen): Das Tag darf mehrmals im XML-Dokument vorkommen, darf jedoch fehlen. #PCDATA (PCDATA = "Parseable Character Data"): Beliebige Daten / Zeichen als Inhalt des XML-lementes
Dokumenttypdefinitionen (DTD) Attribute definieren <!ATTLIST tagname attributname CDATA #IMPLID> Beachten / Merken: #RQUIRD Jedes lement mit dem Namen tagname muss das Attribut attributname enthalten. #IMPLID Das Attribut kann angegeben werden, muss jedoch nicht angegeben werden.
Übung I Schreiben Sie ein XML-Dokument (ohne XML-Deklaration und DOCTYP-Angabe) für die im Folgenden wiedergegebene Dokumenttypdefinition (DTD): <!LMNT catalog (cd+)> <!LMNT cd (title, artist+, label, price, year)> <!LMNT title (#PCDATA)> <!LMNT artist (#PCDATA)> <!LMNT label (#PCDATA)> <!LMNT price (#PCDATA)> <!LMNT year (#PCDATA)> <!ATTLIST cd previewimage CDATA #IMPLID>
Übung II Schreiben Sie eine Dokumenttypdefinition für das im Folgenden angegebene XML-Markup: <nobelpreistraeger-literatur> <preistraeger> <jahr>2009</jahr> <name>herta Müller(* 1953)</name> <land>deutschland</land> <begruendung>die mittels Verdichtung der Poesie und Sachlichkeit der Prosa Landschaften der Heimatlosigkeit zeichnet</begruendung> </preistraeger> <preistraeger> <jahr>2010</jahr> <name>mario Vargas Llosa(* 1936)</name> <land>peru Peru / Spanien Spanien</land> <begruendung>für seine Kartographie der Machtstrukturen und scharfkantigen Bilder individuellen Widerstands, des Aufruhrs und der Niederlage</begruendung> </preistraeger> </nobelpreistraeger-literatur>
und die Klausur? Wie verhalten sich die Konzepte Daten und Information zueinander? Was sind Metadaten? Wozu werden Metadaten benötigt? Worin besteht das Problem, das mit Hilfe von Metadaten gelöst werden soll? Was bezeichnet die Wohlgeformtheit, was die Gültigkeit von XML-Dokumenten? Welche Anforderungen werden an ein wohlgeformtes XML- Dokument gestellt? Was verbirgt sich hinter der Abkürzung DTD? Was beschreibt eine DTD / welchen Sinn haben Schemata? Grob: Von XML nach DTD Grob: Von DTD nach XML [ ]
III. XSLT
XSLT: Intro XSL Transformation (XSLT) Programmiersprache zur Umwandlung von XML-Dokumenten: XML XHTML-Website, XML, SVG, etc. Verwendet die Abfragesprache Xpath, um Teile eines XML-Dokumentes zu adressieren Schablonenkonzept (Templates): ine Transformation besteht aus einer Reihe von einzelnen Transformationsregeln, die als Templates ( Schablonen ) bezeichnet werden. in Template besitzt ein auf XPath basierendes Muster, das beschreibt, für welche Knoten es gilt, und einen Inhalt, der bestimmt, wie das Template seinen Teil des Zielbaums erzeugt. Vgl. Handout!
XSLT und die Praxis: CD-Katalog
XSLT und XPath: Praxis II Variablen cdkatalog-foreach.xslt <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="2.0"> <xsl:output method="html"/> <xsl:template match="/"> <html> <head> <title>cd-kollektion</title> </head> <body> <h2>meine CD-Kollektion</h2> <h3>titel (<cd> Tags) in XML-Datenbasis: <xsl:variable name="anzahl_cds" select="/catalog/cd"/> <xsl:value-of select="count($anzahl_cds)"/> </h3> [ ]
XSLT und XPath: Praxis III for-each cdkatalog-foreach.xslt [ ] <xsl:for-each select="/catalog/cd"> <h3>cd <xsl:value-of select="position()" /></h3> Titel: <xsl:value-of select="title" /><br /> Künstler: <xsl:value-of select="artist" /><br /> Label: <xsl:value-of select="label" /><br /> Jahr: <xsl:value-of select="year" /><br /> Bildurl: <xsl:value-of select="@previewimage"/> <br /> <img> <xsl:attribute name="src"> <xsl:value-of select="@previewimage"/> </xsl:attribute> </img> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
IV. XSLT und Xpath: Achsen & Co.
XPath XPath arbeitet mit dem vom Prozessor verarbeiteten (geparsten) XML-Dokument in Beispiel: <?xml version="1.0" encoding="utf-8"?> <buecher> <autor> <name>murakami</name> <vorname>haruki</vorname> </autor> <titel>hard-boiled Wonderland</titel> <gattung>roman</gattung> </buecher>
XPath 1 <buecher> 2 <autor> 3 <name>murakami</name> 4 <vorname>haruki</vorname> </autor> 5 <titel>hard-boiled Wonderland</titel> 6 <gattung>roman</gattung> </buecher> 1 2 5 6 3 4 Zahlenwerte 1 bis 6 geben die Reihenfolge an, in der ein XML- Prozessor die Knoten ablaufen wird. Dokumentreihenfolge ( Document Ordner ) / Tiefensuche
XPath Begrifflichkeiten XPath Wurzelknoten (Root Node) Wurzel des XML-Dokuments lementknoten Attributknoten Kommentarknoten Namensraumknoten Processing-Instruction-Knoten Textknoten 1 2 5 6 3 4
xkurs: Bäume
Bäume Baum: Begrifflichkeiten Kante Wurzel Innerer Knoten / Kindknoten Blatt
Bäume Höhe des Baumes: Niveau 0 Niveau 1 Niveau 2 Baumhöhe = 3
Traversierung Traversieren Jeden Knoten des Baumes besuchen Reihenfolge, in der die Knoten besucht werden: Preorder, auch: Hauptreihenfolge / Tiefensuche Inorder, auch: symmetrische Reihenfolge Postorder, auch: Nebenreihenfolge Levelorder, auch: Breitensuche
Preorder Traversierung Rekursive Regel: besuche die Wurzel Besuche den linken Unterbaum Besuche den rechten Unterbaum WLR Quelle: http://de.wikipedia.org/w/index.php?title=datei:depth-first-search.gif&filetimestamp=20090326120256 (MR)
Preorder Traversierung Schritt 0 P M L S A A R T
Preorder Traversierung Schritt 1 P M L S A A R T Ausgabe: P
Preorder Traversierung Schritt 2 P M L S A A R T Ausgabe: P M
Preorder Traversierung Schritt 3 P M L S A A R T Ausgabe: P M S
Preorder Traversierung Schritt 4 P M L S A A R T Ausgabe: P M S A
Preorder Traversierung Schritt 5 P M L S A A R T Ausgabe: P M S A A
Preorder Traversierung Schritt 6 P M L S A A R T Ausgabe: P M S A A L
Preorder Traversierung Schritt 7 P M L S A A R T Ausgabe: P M S A A L
Preorder Traversierung Schritt 8 P M L S A A R T Ausgabe: P M S A A L R
Preorder Traversierung Schritt 9 P M L S A A R T Ausgabe: P M S A A L R T
Preorder Traversierung Schritt 10 P M L S A A R T Ausgabe: P M S A A L R T
Preorder Traversierung Schritt 11 P M L S A A R T Ausgabe: P M S A A L R T
Zurück zu XPath: Navigation im Baum
XPath: Navigation Knotenbeziehungen Achsen: lternknoten (parent) Jedes lement verfügt über einen lternknoten. Ausnahme:??? Vorfahre (ancestor) lternknoten von Knoten Beispiel: Der Knoten 2 ist Vorfahre des Knotens 3. Kind (child) Untergeordnete Knoten Beispiel: 3 ist Kindknoten von 2. Geschwister (siblings): Knoten mit gleichen lternknoten sind Geschwisterknoten. Beispiel: Der Knoten 3 ist Geschwisterknoten des Knotens 4. 1 2 5 6 3 4
XPath: Navigation <xsl:value-of select= "//vorname" /> Holt den Inhalt des lementes bzw. Knotens vorname aus dem Baum 1 <buecher> 2 <autor> 3 <name>murakami</name> 4 <vorname>haruki</vorname> </autor> 5 <titel>hard-boiled Wonderland</titel> 6 <gattung>roman</gattung> </buecher>
Achsen
XPath: Achsen Über die Achsen wird festgelegt, in welche Richtung im Knotenbaum navigiert wird: Navigiere vom Wurzelement buecher zum Kindelement autor und gebe mir den Inhalt des Kindelementes name aus: <xsl:value-of select="/buecher/autor/name" /> Ich befinde mich im lement name. Gehe von hier aus zurück zum Geschwisterknoten vorname und gebe mir den Inhalt aus: <xsl:value-of select= "../vorname" />
XPath: Achsen Irgendwo im Baum befindet sich das lement Gattung. Suche das lement und gebe mir den Inhalt aus : <xsl:value-of select="//gattung" />
XPath: Achsen II (ausführliche Schreibweise) Durch den Ausdruck <xsl:value-of select= "child::vorname" /> werden alle Kindknoten (Achse child ) ermittelt, die das lternelement vorname besitzen. Soll der lternknoten von vorname ermittelt werden, würde die parent -Achse verwendet werden: <xsl:value-of select= "parent::vorname" />
XPath: Achsen Verfügbare Achsen: child (Kind) parent (lternknoten../) descendant (Nachkommen) ancestor (Vorfahre) following (Nachfolgende Knoten) preceding-sibling (Vorherige Geschwisterknoten) following-sibling (Nachfolgende Geschwisterknoten) self (aktueller Knoten.) descendant-or-self (Nachkomme oder aktueller Knoten) ancestor-or-self (Vorfahre oder aktueller Knoten)
Adressierung von Knoten
Adressierung Um auf die Knoten eines XML-Dokumentes zugreifen zu können, müssen sie adressiert werden. In XPath wird hierzu vom aktuellen Knoten ausgehend ein Pfad definiert. Unterscheidung ausführliche vs. verkürzte Achsenbezeichnung: ausführlich: /child::autor/child::buch/attribute::titel verkürzt: /autor/buch/@titel
Pfadangaben Absolute vs. relative Pfade: Bei relativen Pfaden wird von dem Knoten ausgegangen, an dem sich der Interpreter befindet.../../vorname Bei absoluten Pfadangaben wird der Pfad vollständig bzw. absolut angegeben /buch/autor/vorname
und die Klausur Was verbirgt sich hinter der Abkürzung XSLT? Was ist XSLT? Wozu dient XSLT? In welchem Verhältnis stehen XSLT und XPath zueinander? Wozu dient XPath? Wozu wird die Angabe <xsl:value-of select= Xpath-Ausdruck /> verwendet - was geschieht hier? Nennen und beschreiben Sie zwei XPath-Achsen.
und die Klausur II Gegeben sei die folgende XML-Datei: <buechersammlung> <buch> <autor gender= male > <name>murakami</name> <vorname>haruki</vorname> </autor> <titel>hard-boiled Wonderland</titel> <gattung>roman</gattung> </buch> </ buechersammlung > Was liefern die folgenden XPath-Ausdrücke zurück / Was selektieren die folgenden XPath-Ausdrücke? <xsl:value-of select="/buecher/autor/name" /> <xsl:value-of select="//titel" /> <xsl:value-of select="/buecher/autor/@gender"/> <xsl:for-each select="/buecher/buch">
/