20
Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 – 10:00 a.m. Room HS 021, B4 1

Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Web Technologien – XML, XQuery, XPath und XSLT

Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Department of Law and Economics WS 2011/2012 Wednesdays, 8:00 – 10:00 a.m. Room HS 021, B4 1

Page 2: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 2

Wrap-Up

•  NoSQL Datenbanken liefern konkrete und besser angepasste Lösungen für spezielle Probleme bei der Datenhaltung

•  NoSQL Datenbank verzichten hierfür teilweise auf die Komplexität klassischer Datenbanken

Page 3: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 3

XML, XQuery, XPath und XSLT

Was ist XML? •  Akronym für eXtensible Markup Language •  Syntax zum hierarchischen strukturieren von Dokumenten und Daten •  Basis für viele Erweiterungen, z.B.

–  Namensräume –  Stylesheets –  Hyperlinks –  Schemata

•  Standardisiert durch das W3C Was sind XQuery, XPath und XSLT? Ø  Werkzeuge zum Umgang mit XML

Page 4: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 4

Warum XML?

•  Einfach –  ...zu lesen durch Menschen –  ...zu verarbeiten durch Maschinen –  ...zu generieren

•  Erweiterbar –  XML ist nur generische Syntax –  Zusatz-Standards nutzen diese Syntax (z.B. XHTML, RDF)

•  Standardisiert –  Weithin akzeptiertes Format –  Lizenzfrei und plattformunabhängig –  Werkzeuge stehen für beinahe jede Programmiersprache zur Verfügung

Page 5: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 5

Syntax von XML

•  Zu Beginn des Dokumentes steht die XML-Deklaration mit Informationen für den Parser

•  Wie bei HTML ist das Dokument strukturiert durch verschachtelte Elemente mit Attributen

•  Durch Namensräume können Bedeutungsräume geschaffen und Namenskonflikte gelöst werden

•  Unstrukturierte Inhalte können mittels CDATA-Element integriert werden

•  Alle Zeichen im Zeichensatz außer den Steuerungszeichen sind erlaubt, selbige müssen codiert werden

•  XML ist „case-sensitive“

Steuerungszeichen: &amp; à & &lt; à < &gt; à > &apos; à ' &quot; à ‘‘

Page 6: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 6

Strukturierte Daten in XML

<?xml version="1.0" encoding="UTF-8"?> <rezept xmlns:lm="http://lebensmittel.org"> <zutaten anzahl="3"> <lm:zutat>Ei</lm:zutat> <lm:zutat>Mehl</lm:zutat> <lm:zutat>Salz</lm:zutat> </zutaten> <anleitung> Alles zusammen- rühren und backen. </anleitung> <foto><![CDATA[BELIEBIGE DATEN]]> </foto> </rezept>

Textuelle Darstellung

Ei Mehl Salz Alles zusammen- rühren und backen.

rezept

zutaten anleitung

Graphische Darstellung

{ anzahl="3" }

zutat zutat zutat

Page 7: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 7

Wohlgeformtheit von XML

•  Wohlgeformtheit Dokument entspricht den syntaktischen Regeln

–  Genau ein Dokument-Element –  Jedes öffnende Element hat ein schließendes Element –  Die Verschachtelung ist balanciert

Beispiel: Gegenbeispiel: <A><B><C>...</C></B></A> <A><B><C>...</A>...</C>

•  Validität

Dokument ist –  wohlgeformt –  konform zu einer Document Type Description (DTD) oder

XML Schema Definition (XSD)

Page 8: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 8

Validierung durch DTD und XSD

•  Erlauben die Beschreibung der Validitätsregeln für ein XML-Dokument

•  XSD wird im Gegensatz zu DTD ebenfalls direkt als XML beschrieben •  XSD ist der Nachfolger von DTD und erlaubt eine erheblich umfassendere

Beschreibung der Validitätsregeln, diese umfassen: •  (Komplexe) Elemente •  Attribute •  Typisierung •  Listen •  Restriktionen

<?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Buch" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Titel" type="xs:string"/> <xs:element name="Verlag" type="xs:string" minOccurs="0"/> <xs:element name="Anzahl" type="xs:positiveInteger"/> <xs:element name="Preis" type="xs:decimal"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Page 9: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 9

Werkzeuge zur Verarbeitung von XML

XML Path Language - XPath: •  Pfadbasierte Selektion einzelner Datenknoten im XML Dokument •  Filterung nach Knotentests und Prädikaten

XML Dokument

Dem XPath Ausdruck entsprechendes Teilstück

des XML Dokument, z.B.: nur bestimmte

Unterknoten mit bestimmten Werten

XPath Ausdruck

Page 10: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 10

XPath Beispiele

<?xml version="1.0" encoding="UTF-8"?> <rezepte> <rezept schwierigkeit="3"> <titel>Pfannkuchen</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Mehl</zutat> </zutaten> <anleitung>Alles zusammenrühren und backen.</anleitung> </rezept> <rezept schwierigkeit="1"> <titel>Eischaum</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Salz</zutat> </zutaten> <anleitung>Gut durchmischen</anleitung> </rezept> </rezepte>

/rezepte à  Das erste Element „rezepte“ //rezepte/rezept à  Alle Elemente „rezept“ die innerhalb des eines

Elements „rezepte“ liegen

//rezept[1]/zutaten à  Die Zutaten des ersten Rezeptes

//rezept[@schwierigkeit = '3'] à  Alle Rezepte deren Schwierigkeit 3 ist

child::* à  Alle unterhalb des aktuellen Knoten liegenden

Knoten //rezept/titel/text() à Die Titel aller Rezepte

Page 11: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 11

Werkzeuge zur Verarbeitung von XML

XML Query Language - XQuery: •  SQL-ähnliche Abfrage von Daten eines XML Dokuments •  Diverse Abfragearten (z.B. sequenzbasierte FLWOR Ausdrücke (gespr.

„Flower“) oder CRUD) in Kombination mit XPath Ergebnissen

XML Dokument

Rückgabewert des XQuery Ausdruck nach Bezug der entsprechenden

XML Teilstücke und Verarbeitung der

Sequenzbeschreibungen

XQuery Ausdruck

Page 12: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 12

XQuery Abfragen und Funktionen

•  FLWOR Abfragen erlauben die sequenzbasierte Abfrage von Daten: •  for definiert die Abfragesequenz •  let ermöglicht die Deklaration weiterer Variablen •  where ermöglicht die Einschränkung der Ergebnisse •  order by ermöglicht die Sortierung der Ergebnisse •  return definiert das Format er Ergebnisse

•  CRUD Funktionalität: •  Insert node ... into erlaubt das einfügen von Knoten •  Delete node erlaubt das löschen von Knoten •  Replace node ... with ermöglicht das Ändern von Knoten

•  XQuery unterstützt Funktionen mit mehreren Übergabeparametern und einem Rückgabeparameter zur Kapselung mehrfach verwendeter Funktionalität

Page 13: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 13

XQuery Beispiele

<?xml version="1.0" encoding="UTF-8"?> <rezepte> <rezept schwierigkeit="3"> <titel>Pfannkuchen</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Mehl</zutat> </zutaten> <anleitung>Alles zusammenrühren und backen.</anleitung> </rezept> <rezept schwierigkeit="1"> <titel>Eischaum</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Salz</zutat> </zutaten> <anleitung>Gut durchmischen</anleitung> </rezept> </rezepte>

for $rezept in //rezept where $rezept/zutaten/@anzahl > 1 order by $rezept/@schwierigkeit ascending return <li>{$rezept/titel/text()}</li> à  Abfrage aller Rezept-Titel von Rezepten mit mehr

als einer Zutat als HTML-Liste, sortiert nach der Schwierigkeit

insert node <rezept><titel>Omlett</titel></rezept> into /rezepte à  Hinzufügen eines neuen Rezeptes delete node //rezepte/rezept[3] à  Löschen des 3. Rezeptes replace node //rezepte/rezept[3] with <rezept><titel>Blub</titel></rezept> à  Ändern eines Rezeptes

Page 14: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 14

Werkzeuge zur Verarbeitung von XML

EXtensible Stylesheet Language (Transformation) - XSL(T): •  Programmiersprache zur Transformation von in XML strukturierten Daten

in beliebige Ausgabedokumente (z.B. XML, HTML, PDF, RTF...) unter zu Hilfenahme von XPath

•  Das Stylesheet kann direkt im XML Dokument referenziert werden

XML Dokument Vom Parser verarbeit-

tetes Dokument mit den Ergebnissen der XSL

Befehlen nach deren Abarbeitung

XSLT Prozessor

Dokument mit XSL Befehlen

Page 15: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 15

XSLT Kontrollstrukturen

Wie klassische Programmiersprachen unterstützt auch XSLT diverse Kontrollstrukturen: •  Schleifen:

<xsl:for-each select="rezepte/rezept">...</xsl:for-each> •  Bedingungen:

<xsl:if test=“@anzahl &gt; 0">...</xsl:if> •  Fallunterscheidung:

<xsl:choose> <xsl:when select="rezepte/rezept">...</xsl:when> <xsl:otherwise>...</xsl:otherwise> </xsl:choose>

Page 16: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 16

XSLT Templates

•  Templates beschreiben Formatierungsvorlagen welche auf eine bestimmte Menge von XML Knoten ausgeführt werden

•  Templates können mittels „match“ definiert auf eine durch XPath definierte Menge von Knoten ausgeführt werden indem „apply-templates“ ausgeführt wird

•  Templates können mittels „name“ definiert expliziert mit bestimmten Knoten aufgerufen werden indem „call-template“ ausgeführt wird

•  Wird ein Template über den Namen aufgerufen können Parameter mit „with-param“ übergeben werden und im Template mittels „param“ verwendet werden

Page 17: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 17

XSLT Template Beispiel (1)

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Rezepte.xsl" type="text/xsl"?> <rezepte> <rezept schwierigkeit="3"> <titel>Pfannkuchen</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Mehl</zutat> </zutaten> <anleitung>Alles zusammenrühren und backen.</anleitung> </rezept> <rezept schwierigkeit="1"> <titel>Eischaum</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Salz</zutat> </zutaten> <anleitung>Gut durchmischen</anleitung> </rezept> </rezepte>

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html><body> <h1>Rezepte</h1> <xsl:apply-templates select="rezepte/rezept"/> </body></html> </xsl:template> <xsl:template match="//rezept"> <h2><xsl:value-of select="titel"/></h2> [...] </xsl:template> </xsl:stylesheet>

Rezepte.xml

Rezepte.xsl

Page 18: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 18

XSLT Template Beispiel (2)

<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="Alternativ.xsl" type="text/xsl"?> <rezepte> <rezept schwierigkeit="3"> <titel>Pfannkuchen</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Mehl</zutat> </zutaten> <anleitung>Alles zusammenrühren und backen.</anleitung> </rezept> <rezept schwierigkeit="1"> <titel>Eischaum</titel> <zutaten anzahl="2"> <zutat>Ei</zutat> <zutat>Salz</zutat> </zutaten> <anleitung>Gut durchmischen</anleitung> </rezept> </rezepte>

<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html><body> <h1>Rezepte</h1> <xsl:for-each select="rezepte/rezept"> <xsl:call-template name="rezept"> <xsl:with-param name="rTitel" select="titel"/> </xsl:call-template> </xsl:for-each> </body></html> </xsl:template> <xsl:template name="rezept"> <xsl:param name="rTitel"/> <h2><xsl:value-of select="$rTitel"/></h2> [...] </xsl:template> </xsl:stylesheet>

Rezepte.xml

Alternativ.xsl

Page 19: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass

06.12.11 Slide 19

Literatur

Bücher: •  Doug Tidwell

XSLT, O'Reilly Media ISBN-10: 0596527217, ISBN-13: 978-0596527211

•  Elliotte Rusty Harold, W. Scott Means XML in a Nutshell, O'Reilly Media ISBN-10: 0596007647, ISBN-13: 978-0596007645

Web: •  http://www.w3.org/XML/ •  http://www.w3.org/TR/xpath/ •  http://www.w3.org/TR/xquery/ •  http://www.w3.org/TR/xslt20/ •  http://www.xml.com/

Page 20: Web Technologien – XML, XQuery, XPath und XSLTiss.uni-saarland.de/workspace/documents/wt_8_xml_xquery_xpath_und_xslt.pdf · Web Technologien – XML, XQuery, XPath und XSLT Univ.-Prof

Univ.-Prof. Dr.-Ing. Wolfgang Maass  

Univ.-Prof. Dr.-Ing. Wolfgang Maass Chair in Information and Service Systems Saarland University, Germany