Upload
duongphuc
View
218
Download
0
Embed Size (px)
Citation preview
1. Übung zur Vorlesung
„Service-orientierte Architekturen“
XML Grundlagen
SoSe 2011
Wiederholung
• Definition SOA?
• Definition Service?
SoSe 2011
Service-orientierte Architektur (SOA):
Eine Service-orientierte Architektur ist eine unternehmensweite,
verteilte Software-Architektur für betriebliche Informationssysteme,
deren elementare Bestandteile Dienste/Services sind. Diese Dienste
sind entlang von Geschäftsprozessen zusammengestellt. Die
Hauptziele von SOA sind Flexibilität und Wartbarkeit in Bezug auf
Änderungen der Geschäftsprozesse.
Dienst (Service):
Ein Dienst ist eine im Netzwerk verfügbare, lose gekoppelte
Softwarekomponente, welche wohl-definierte Schnittstellen implementiert
und mit standardisierten Protokollen aufgerufen werden kann.
2
SOA und XML?
• Was hat XML mit SOA zu tun?
• „… wohl-definierte Schnittstellen implementiert und mit
standardisierten Protokollen …“
• XML spielt wichtige Rolle bei Standards für Schnittstellen und
Datenaustauschformaten
– WSDL basiert auf XML
– SOAP basiert auf XML
– UDDI basierte auf XML
– BPEL basiert auf XML
XML-Kenntnisse sind bei der technischen Umsetzung einer
SOA unerlässlich
SoSe 2011 3
XML Grundlagen
• Bsp. von W3Schools
• XML steht für eXtensible Markup Language
• Textbasierte Auszeichnungssprache zur Datenspeicherung bzw. zum
Datentransport
• XML-Daten haben Baumstruktur
– Root- und Child- / Parent-Elemente
– Neighbor / Sibling
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
SoSe 2011
Root
Child
note
to from heading body
4
XML Aufbau
• Erste Zeile ist immer XML-Deklaration
– Sie beschreibt Version und Kodierung
Weiterhin gibt es
• Tags– öffnend <note>, schließend </note>, kombiniert <br />
– Jedes öffnende Tag muss ein schließendes Tag haben
– Tags sind Case-Sensitive
• Attribute– version="1.0"
– Werte müssen „gequotet“ sein
• Text– Don't forget me this weekend!
• Kommentare– <!-- This is a comment -->
SoSe 2011
<?xml version="1.0" encoding="ISO-8859-1"?>
5
Namespaces
• Strukturierung und Vermeidung von Namenskonflikten
– Ähnlich zu Packages in Java
• Beispiel
– Tag <table> existiert auch in HTML
– Namespace vermeidet Doppeldeutigkeit
• Wichtig: Unterschied zwischen
– Namespace http://www.my-table-shop.com und
– Namespace-Präfix mts:
– Unterschiedliche Präfixe können auf den selben Namespace
verweisen
SoSe 2011
<html xmlns:mts="http://www.my-table-shop.com">
<mts:table>
<mts:size length="180" width="90" heigth="76" />
</mts:table>
</html>
6
XML Schema (XSD)
• XML Schema Definitionen definieren die Struktur eines XML-
Dokuments
• Sie beantworten u. a. folgende Fragen
– Welche Tags sind erlaubt?
– Mit welchem Inhalt?
– Mit welchen Attributen?
– In welchen anderen Tags?
– Mit welchen Datentypen/Restriktionen?
SoSe 2011 7
XML Schema Typ-Hierarchie
Aus:
http://www.w3.org/TR/xmlschema-2/
SoSe 2011 8
Eigene Restriktionen
• Bsp.: E-Mail als Restriktion eines String
<xs:element name="eMail">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern
value="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}" />
</xs:restriction>
</xs:simpleType>
</xs:element>
SoSe 2011 9
XML Schema Beispiel (von W3Schools)
<?xml version="1.0"?>
<xs:schema xmlns="http://www.w3schools.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
SoSe 2011 10
XML Schema Beispiel besser
<?xml version="1.0"?>
<xs:schema xmlns="http://www.w3schools.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="note" type="NoteType" />
<xs:complexType name="NoteType">
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
SoSe 2011 11
Schema in XML-Dokument nutzen
• Im Root-Element den Schema-Instanz-Namensraum und die
XSD-Schema-Datei angeben
• Ermöglicht Validierung der XML-Datei anhand des Schemas
• Bsp. EPML
<?xml version="1.0" encoding="UTF-8" ?>
<epml
xmlns="http://www.epml.de"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.epml.de
http://wi.wu-wien.ac.at/home/mendling/EPML/EPML_12.xsd">
[…]
</epml>
Namespace und XSD
sind durch Leerzeichen
getrennt
SoSe 2011 12
XML-Schema Übung
• Erstellt ein valides XML-Dokument (ohne Schema) mit mind.
– 3 Ebenen im XML-Baum
– einem öffnenden, schließenden und kombinierten Tag
– einem sinnvollen Attribut
– einem Textelement
– einer sinnvollen Nutzung von Namespaces (Doppelte Tags)
• Benutzt den XML- und XSD-Editor von Eclipse (WTP)
• Übersichtliche Einführungen in XML, XSD und Namespaces
– http://www.w3schools.com
• Erstellt ein Schema für Gästebucheinträge und erstellt eine
Beispiel-XML-Datei, die dieses Schema nutzt
• XML-Validieren mit Eclipse WTP
– Rechtsklick auf XML-Datei im Project Explorer Validieren
SoSe 2011 13
SoSe 2011
XPath
• XPath ist eine Abfragesprache für XML-Dokumente
• XPath selektiert Bereiche in XML-Dokumenten
• XPath definiert Syntax für Pfadausdrücke, um in XML-
Dokumenten zu navigieren
• XPath hat eine Standardbibliothek mit Funktionen
– Z. B. zur String-Manipulation
– Gute Übersicht:
http://www.w3schools.com/XPath/xpath_functions.asp
• XPath ist W3C-Standard
14
SoSe 2011
XPath Syntax Beispiele
• Knoten auswählen
– entry wählt Kindknoten von entry aus
– /guestbook wählt Wurzelelement guestbook aus
– //entry wählt Unterknoten entry aus, egal von wo
– . bzw. .. wählt aktuellen bzw. Elternknoten aus
– @id wählt id-Attribut aus
• Prädikate (Einschränkung der ausgewählten Knoten)
– //entry[1] wählt ersten entry aus
– //entry[last()] wählt letzten entry aus
– //entry[position()<3] wählt die ersten zwei entries aus
– //entry[@id] wählt entries aus, die ein Attribut id haben
– //entry[@id=1] wählt entry mit id 1 aus
• Axen
– Attribute, child, parent, ancestor, descendant, following, preceding …
15
SoSe 2011
XPath-Übung
• XML-Datei
http://static.se.uni-hannover.de/documents/
ws2008_soa_uebung/Abschlussarbeitsverwaltung.xml
• Gesuchte XPath-Ausdrücke
1. Alle UseCases auswählen
2. Den ersten UseCase auswählen
3. Den letzten UseCase auswählen
4. Den UseCase mit id 5 auswählen
5. UseCase mit Titel „Betreuer plant Zwischenvortrag“ auswählen
6. Alle UseCase Titel auswählen
(attributes/ConstructionElementAttribute/value mit key=„Titel“)
7. UseCase Titel des UseCase mit id 10 ausgeben
Übung…
16
Hausaufgaben
• Es gibt Punkte, die bei bestandener Klausur angerechnet
werden
– Zur Punkteverwaltung bitte hier anmelden:
https://anmeldung.se.uni-hannover.de
• Abgaben an [email protected]
• Abgaben möglichst als .zip
• Abgabe bis zur nächsten Übung
Fragen gerne an [email protected]
Raum: G307
Tel.: (0)511 – 762-7463
SoSe 2011 17
Durchgängiges Beispiel: Web-Shop
• In den Übungen bauen wir Teile eines Web-Shops
• Überlegt euch, was ihr in eurem Web-Shop verkaufen wollt
• Ihr solltet euch mit eurem Produkt ein wenig auskennen
• Wählt die Palette nicht zu breit, lasst aber Spielraum
– Z. B. Snowboard-Kleidung statt Kleidung (zu allgemein) oder blau-
weiß-gestreifte Herren-Snowboard-Handschuhe (zu speziell)
SoSe 2011 18
Aufgabe 1 (10 Punkte)
• (5P) Erstellen Sie ein Schema, dass alle im Shop angebotenen Produkte und deren Eigenschaften wie
– Artikelnummer, Name, Preis, Lagerbestand, Beschreibung
– … (Spezifika Ihrer Produkte)
abdeckt.
• (3P) Erstellen Sie eine Beispiel-XML-Datei mit mindestens 3 Artikeln, die das Schema nutzt.
• (2P) Erstellen Sie folgende XPath-Ausdrücke
– Alle Artikel auswählen
– Alle Artikelnummern auswählen
– Alle Lagerbestände von Artikeln, mit einer bestimmten Eigenschaft (Spezifika)
– Die Beschreibung des ersten Artikels mit einer bestimmten Eigenschaft
• Alle Nutzdaten sollen dabei XML-Elemente sein
• Metadaten sollen möglichst als Attribute definiert werden
SoSe 2011 19