1 / 21

XML – Grundlagen und Anwendungen

XML – Grundlagen und Anwendungen. Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr. Michael Löwe, FHDW Hannover. Motivation . Internet verändert sich vom Hypertext (WWW) für den menschlichen Betrachter zur Informationsinfrastruktur für IT-Services (SOA).

skyler
Download Presentation

XML – Grundlagen und Anwendungen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML – Grundlagen und Anwendungen Teil 4: Modellierung von Datenmodellen mit XML-Schema Prof. Dr. Michael Löwe,FHDW Hannover

  2. Motivation Internet verändert sich vom Hypertext (WWW) für den menschlichen Betrachter zur Informationsinfrastruktur für IT-Services (SOA). Die Kommunikationsinhalte verändern sich von Dokumenten (Texte mit Reihenfolge und Gliederung) zu Datenstrukturen (Daten, Objekte und Referenzen). HTTP, HTML und XML sind weniger sichtbarer Selbstzweck und mehr Mittel zum Zweck im Hintergrund (RPC, etc.). Abbildung der objektorientierten Modelle muss möglich sein. XML Grundlagen und Anwendungen

  3. Kritik an DTDs Nur Objekte keine Typen Zu wenig Basistypen (kein string, integer etc.) Nur Komposition keine Spezialisierung Nur globale Referenzen (ID, IDREF) Kein Konzept für Namensräume Selbst nicht XML. XML Grundlagen und Anwendungen

  4. Inhalt XML-Schema verbessert DTDs durch: Reichhaltige Basistypen  Built-in‘s Trennung von Element und Typ  Klassen Differenzierte Schlüssel  Assoziationen Typerweiterung  Spezialisierung Ersetzungsgruppen  „Polymorphie“ XML Grundlagen und Anwendungen

  5. dateTime boolean float string integer byte NMTOKENS Basisdatentypen XML Grundlagen und Anwendungen

  6. Definition von Basistypen Aufzählung Längenbeschränkungen Wertbegrenzungen (untere / obere Schranken) White-Space-Eliminierung Reguläre Ausdrücke Vereinigung Listen XML Grundlagen und Anwendungen

  7. Person name: string vorname: string geburtstag: date Klassen als Elemente <!ELEMENT Person EMPTY> <!ATTLIST Person name CDATA #REQUIRED vorname CDATA #REQUIRED geburtstag CDATA #REQUIRED> Komposition: <!ELEMENT LebensVersicherungsVertrag (Person, Person, …) > Spezialisierung <!ELEMENT Frau (Person)> XML Grundlagen und Anwendungen

  8. Klassen als Schema-Elemente <element name=„Person“> <complexType> <attribute name=„name“ type=„string“ use=„Required“/> <attribute name=„vorname“ type=„string“ use=„Required“/> <attribute name=„geburtstag“ type=„date“ use=„Required“/> </complexType> </element> Komposition: <element name=„LebensVersicherungsVertrag“> <complexType> <sequence> <element ref=„Person“> <element ref=„Person“> ….. </sequence> </complexType> </element> XML Grundlagen und Anwendungen

  9. Person name: string vorname: string geburtstag: date VersNehmer VersPerson LebenVertrag Klassen als Schema-Typen <element name=„Person“> <complexType> <attribute> name=„name“ type=„string“ use=„Required“/> <attribute> name=„vorname“ type=„string“ use=„Required“/> <attribute> name=„geburtstag“ type=„date“ use=„Required“/> </complexType> </element> Komposition: <element name=„LebensVersicherungsVertrag“> <complexType> <sequence> <element ref=„Person“> <element ref=„Person“> ….. </sequence> </complexType> </element> <element name=„person“ type=„Person> <complexType name=„Person“> <attribute> name=„name“ type=„string“ use=„Required“/> <attribute> name=„vorname“ type=„string“ use=„Required“/> <attribute> name=„geburtstag“ type=„date“ use=„Required“/> </complexType> Komposition: <element name=„LebensVersicherungsVertrag“> <complexType> <sequence> <element ref=„person“> <element ref=„person“> ….. </sequence> </complexType> </element> <complexType name=„Person“> <attribute> name=„name“ type=„string“ use=„Required“/> <attribute> name=„vorname“ type=„string“ use=„Required“/> <attribute> name=„geburtstag“ type=„date“ use=„Required“/> </complexType> Komposition: <element name=„LebensVersicherungsVertrag“> <complexType> <sequence> <element name=„versicherungsnehmer“ type=„Person“> <element name=„versichertePerson“ type=„Person“> ….. </sequence> </complexType> </element> XML Grundlagen und Anwendungen

  10. Person name: string vorname: string geburtstag: date VersNehmer VersPerson LebenVertrag Komposition vs. Assoziation <complexType name=„Person“> <attribute> name=„name“ type=„string“ use=„Required“/> <attribute> name=„vorname“ type=„string“ use=„Required“/> <attribute> name=„geburtstag“ type=„date“ use=„Required“/> </complexType> Komposition: <element name=„LebensVersicherungsVertrag“> <complexType> <sequence> <element name=„versicherungsnehmer“ type=„Person“> <element name=„versichertePerson“ type=„Person“> ….. </sequence> </complexType> </element> <complexType name=„Person“> <attribute> name=„id“ type=„ID“ use=„Required“/> <attribute> name=„name“ type=„string“ use=„Required“/> <attribute> name=„vorname“ type=„string“ use=„Required“/> <attribute> name=„geburtstag“ type=„date“ use=„Required“/> </complexType> Assoziation: <element name=„LebensVersicherungsVertrag“> <complexType> <attribute> name=„versNehmer“ type=„IDREF“ use=„Required“/> <attribute> name=„versPerson“ type=„IDREF“ use=„Required“/> </complexType> </element> <complexType name=„Person“> <attribute> name=„id“ type=„int“ use=„Required“/> …… </complexType> <complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/> </complexType> <element name=„System“> <complexType> <choice maxOccurs=„unbounded“> <element name=„person“ type=„Person“/> <element name=„vertrag“ type=„LVVertrag“/> </choice> </complexType> </element> <complexType name=„Person“> <attribute> name=„id“ type=„int“ use=„Required“/> …… </complexType> <complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/> </complexType> <element name=„System“> <complexType> <element name=„person“… </complexType> <key name=„personKey“> <selector xpath=„person“/> <field xpath=„@id“/> </key> </element> <complexType name=„Person“> <attribute> name=„id“ type=„int“ use=„Required“/> </complexType> <complexType name=„LVVertrag“> <attribute> name=„versNehmer“ type=„int“ use=„Required“/> <attribute> name=„versPerson“ type=„int“ use=„Required“/> </complexType> <element name=„System“> <complexType> <element name=„vertrag“….</complexType> <key name=„personKey“>…..</key> <keyref name=„versNehmerRef“ refer=„personKey“> <selector xpath=„vertrag“/> <field xpath=„@versNehmer“/> </keyref> </element> XML Grundlagen und Anwendungen

  11. Typen und System <complexType name=„T1“> ….. </complexType> <complexType name=„T2“> ….. </complexType> ….. <complexType name=„System“> <choice maxOccurrs=„unbounded“> <element name=„topElement“ type=„topT1“/> <element name=„topElement“ type=„topT2“/>……. </choice> </complexType> <element name=„system“ type=„System“> <key name=„K1“…. <key name=„K2“…. <keyref name=„KR1“…. <keyref name=„KR2“…. </element> XML Grundlagen und Anwendungen

  12. Mengen-wertige Relationen <complexType name=„Person“> <sequence> <element name=„vertrag“ minOccurs=„0“ maxOccurs=„unbounded“> <complexType> <attribute name=„ref“ type=„int“/> </complexType> </element> <element name=„adresse“ maxOccurs=„unbounded“> ….. </element> </sequence> </complexType> XML Grundlagen und Anwendungen

  13. Adresse PostfachAdresse StrassenAdresse Vererbung auf Typen <complexType name=„Adresse“ abstract=„true“> <attribute name=„PLZ“ type=„string“/> <attribute name=„ort“ type=„string“/> </complexType> <complexType name=„PostfachAdresse“> <complexContent> <extension base=„Adresse“> <attribute name=„postFachNr“ type=„int“/> </extension> </complexContent> </complexType> <complexType name=„StrassenAdresse“> ….. XML Grundlagen und Anwendungen

  14. Adresse PostfachAdresse StrassenAdresse Vererbung auf Elementen <complexType name=„Adresse“ abstract=„true“> …. </complexType> <complexType name=„PostfachAdresse“> <complexContent> <extension base=„Adresse“>…. </complexType> <complexType name=„StrassenAdresse“> <complexContent> <extension base=„Adresse“>…. </complexType> <element name=„adresse“ type=„Adresse“ abstract=„true“/> <element name=„pfAdresse“ type=„PostfachAdresse“ substitutionGroup=„adresse“/> <element name=„stAdresse“ type=„StrassenAdresse“substitutionGroup=„adresse“/> XML Grundlagen und Anwendungen

  15. Überblick Elementdefinition: <element name=„…“ type=„…“/> Name eines öffentlichen Typs muss angegeben werden <element name=„…“/> <complexType> Hier muss der private Typ definiert werden </complexType> </element> XML Grundlagen und Anwendungen

  16. Überblick Typedefinition: <complexType …ggf. Namensangabe..> <complexContent> <extension base=„…“> Inhaltsspezikation mit <sequence> und <choice> Elemente in den Sequenzen und Auswahlen Kardinalität durch Attribute minOccurs und maxOccurs (Standardwert 1) Attributeliste: <attribute name=„..“ type=„..“ use=„..“/> </extension> </complexContent> </complexType> XML Grundlagen und Anwendungen

  17. Überblick Schlüsseldefinitionen am Ende von Elementen: (Lokal zum Element, in dem die Definition steht) <key name=„…“> <selector xpath =„…“/> <field xpath = „…“/> </key> <keyref name=„…“ refer=„Schlüsselname“> <selector xpath =„…“/> <field xpath = „…“/> </keyref> XML Grundlagen und Anwendungen

  18. Namensräume (Sketch) Im Schema definierte Objekte sind Namensräumen zugeordnet. Konfliktlösung bei gleichen Elementnamen in verschiedenen Schemata Zuordnung durch Attribut targetNamespace von Element schema targetNamespace="http://xml.netbeans.org/examples/targetNS" Namen von Namensräumen sind URI‘s <element name=„xxx“…/> definiert "http://xml.netbeans.org/examples/targetNS":xxx Abkürzung von Namensraumnamen durch Prefixvereinbarungen: xmlns:ns = "http://xml.netbeans.org/examples/targetNS„ Danach ns:xxx statt "http://xml.netbeans.org/examples/targetNS":xxx Unsere Namensräume: Schemaobjekte: xmlns:xsd="http://www.w3.org/2001/XMLSchema„ Typunterscheidung: xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance‚ StyleSheet-Objekte: xmlns:xsl="http://www.w3.org/1999/XSL/Transform" XML Grundlagen und Anwendungen

  19. Zusammenfassung XML-Schema ist XML-Dialekt, geht weit über DTD hinaus, vereinheitlicht Werte für Inhalte und Attribute kann UML-Klassenmodelle 1:1 abbilden, verfügt über komfortable built-in-Datentypen, unterstützt die Wiederverwendung (Name Spaces), ist erste Wahl zur Definition vom XML-Protokollen XML Grundlagen und Anwendungen

  20. System * * * Person Adresse Postfach Strasse Übung 6 Erweitern Sie das Schema für das Modell unten um: • Zusätzliches Attribut: Länderkennzeichen • Bankverbindungen für Personen • Juristische und Natürliche Personen • Lieferungen von Strasse nach Strasse Testen Sie Ihre Lösungen durch Erweiterung der Instanz! XML Grundlagen und Anwendungen

  21. Übung 7 Schreiben Sie ein Schema für Schemata! XML Grundlagen und Anwendungen

More Related