1 / 78

XML Schema

XML Schema. Inhalte. Schema-Wurzel-Element Elemente und Attribute Gruppen Einfache Datentypen Komplexe Typen Schlüssel und Verweise Auslagerung und Wiederverwendung Namensräume Joker-Elemente Ersetzungsgruppen Notation. Einleitung. Schema root Übersicht Dokumentation.

hart
Download Presentation

XML Schema

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 Schema

  2. Inhalte Schema-Wurzel-Element Elemente und Attribute Gruppen Einfache Datentypen Komplexe Typen Schlüssel und Verweise Auslagerung und Wiederverwendung Namensräume Joker-Elemente Ersetzungsgruppen Notation

  3. Einleitung Schema root Übersicht Dokumentation

  4. EinleitungSchema-Wurzel-Element • Das schema-Element setzt verschiedene Standardwerte, die von Elementen und Attributen überschrieben werden können. • Es kann einen Ziel-Namensraum und auch andere intern genutzte Namensräume enthalten.

  5. EinleitungSchema-Wurzel-Element <schema attributeFormDefault = (qualified | unqualified) : unqualified blockDefault = (#all | List of (extension | restriction | substitution)) : ‘’ elementFormDefault = (qualified | unqualified) : unqualified finalDefault = (#all | List of (extension | restriction)) : ‘’ targetNamespace = anyURI version = token xml:lang = language > Content: ( (include | import | redefine | annotation)*, (((simpleType | complexType | group | attributeGroup) | element | attribute | notation), annotation*)*) </schema>

  6. EinleitungSchema-Wurzel-Element Eine Schema-Datei wird von den Attributen noNamespaceSchemaLocation oder schemaLocation referenziert. <Catalog xmlns:xsi="http://www.w3.org/2001/ XMLSchema-instance" xsi:noNamespaceSchemaLocation="CatalogWithout Hierarchies.xsd">

  7. EinleitungÜbersicht

  8. EinleitungStandard Portal-Seite des W3C: http://www.w3c.org/XML/Schema Einführung: http://www.w3c.org/TR/xmlschema-0/ Strukturen: http://www.w3c.org/TR/xmlschema-1/ Datentypen: http://www.w3c.org/TR/xmlschema-2/

  9. Elemente und Attribute Elemente Attribute Lokale Elemente und Attribute Globale Elemente und Attribute Inhaltsmodelle für Elemente

  10. Elemente und Attribute <Catalog> <Book id="11"> <Title>Dragons in the Middle Ages</Title> <ProductLine>Dragon History</ProductLine> <Price>14.95</Price> </Book> <Book id="12"> <Title>Society and Dragons</Title> <Price>14.95</Price> </Book> </Catalog>

  11. Elemente und Attribute: Elemente • Ein Element kann einen Namen haben oder kann eine Referenz auf ein globales Element sein. • Möglichkeiten der Ableitung werden durch die Attribute final (globales Element) und block kontrolliert, wobei blockdie verbotenen Ableitungstypen aufzählt. • Die Kardinalität wird festgelegt durch minOccurs und maxOccurs (Standardwert 1). • Es kann in einer Element-Ersetzungsgruppe verwendet werden und auch abstrakt sein. • Wenn Text-Inhalt zulässig ist, hat es einen entsprechenden Datentyp, ein gemischtes Inhaltsmodell oder auch einen nil-Wert.

  12. Elemente und Attribute: Elemente <element abstract = boolean : false block = (#all | List of (extension | restriction | substitution)) default = string final = (#all | List of (extension | restriction)) fixed = string form = (qualified | unqualified) maxOccurs = (nonNegativeInteger | unbounded) : 1 minOccurs = nonNegativeInteger : 1 name = NCName nillable = boolean : false ref = QName substitutionGroup = QName type = QName > Content: (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*)) </element>

  13. Elemente und Attribute: Attribute • Ein Attribut kann • einen Standardwert oder einen festen Wert haben • einen Namen haben oder • eine Referenz auf ein globales Attribut enthalten • qualifiziert (zu einem Namensraum gehörig) und unqualifiziert sein • Seine Verwendung im XML-Dokument kann optional, erforderlich oder auch verboten (verwendet bei Ableitung durch Einschränkung) sein.

  14. Elemente und Attribute Attribute <attribute default = string fixed = string form = (qualified | unqualified) name = NCName ref = QName type = QName use = (optional | prohibited | required) : optional > Content: (annotation?, simpleType?) </attribute>

  15. Elemente und Attribute: LokaleElemente und Attribute • Elemente und Attribute können lokal oder global definiert sein. • Lokale Komponenten definiert man in einem Eltern-Element. Daher können verschiedene Inhaltsmodelle unter dem gleichen Element-Namen, aber innerhalb verschiedener Eltern-Elemente definiert werden.

  16. Elemente und AttributeGlobale Elemente und Attribute • Globale Elemente und Attribute können für lokale Referenzen innerhalb verschiedener Eltern-Elemente zum Einsatz kommen. • Dennoch kann man alternativ weiterhin lokale Definitionen mit dem gleichen Namen erstellen.

  17. Elemente und AttributeInhaltsmodelle für Elemente • Definitionen für Elemente gruppiert man innerhalb eines Inhaltsmodells, welche wiederum kombiniert und durch eine Wiederholung (Kardinalitätsangabe) erweitert werden können, um komplexe Inhaltsmodelle zu erstellen.

  18. Elemente und AttributeInhaltsmodelle für Elemente Ein gültiges Dokument enthält… • … eine freie Auswahl in einer freien Reihenfolge der definierten Elemente.<allmaxOccurs = 1 : 1minOccurs = (0 | 1) : 1 > Content: (annotation?, element*)</all>

  19. Elemente und AttributeInhaltsmodelle für Elemente • …die Elemente oder Gruppen in der Reihenfolge, in der sie in sequence definiert werden.<sequencemaxOccurs = (nonNegativeInteger | unbounded) : 1minOccurs = nonNegativeInteger : 1 >Content: (annotation?, (element | group | choice | sequence | any)*)</sequence> Ein gültiges Dokument enthält…

  20. Elemente und AttributeInhaltsmodelle für Elemente • … nur eines der Elemente oder Gruppen, die innerhalb von choice aufgezählt werden.<choicemaxOccurs = (nonNegativeInteger | unbounded) : 1minOccurs = nonNegativeInteger : 1 >Content: (annotation?, (element | group | choice | sequence | any)*)</choice> Ein gültiges Dokument enthält…

  21. Gruppen Elementgruppen Attributgruppen

  22. GruppenElementgruppen • Eine Elementgruppe ist eine Sammlung von Elementen, die in einem Inhaltsmodell definiert sind und die später als Ganzes referenziert werden können. <group name = NCName> Content: (annotation?, (all | choice | sequence)) </group>

  23. GruppenAttributgruppen • Eine Attributgruppe ist eine Sammlung von Attributen, die später als Ganzes referenziert werden können. <attributeGroup name = NCName ref = QName > Content: (annotation?, ( (attribute | attributeGroup)*, anyAttribute?) ) </attributeGroup>

  24. Einfache Datentypen Typhierarchie Fassetten Abgeleitete einfache Typen Lokale einfache Datentypen Globale einfache Datentypen

  25. Einfache DatentypenTyphierarchie • Das Typsystem von XML Schema und die Definition von abgeleiteten und genaueren einfachen Datentypen kann für Elemente und Attribute verwendet werden.

  26. Einfache DatentypenTyphierarchie

  27. Einfache DatentypenFassetten • Fassetten – allein oder kombiniert – erlauben eine genauere Definition von Datentypen durch die Einschränkung von vorhandenen Datentypen.

  28. Einfache DatentypenAbgeleitete einfache Typen • Einfache Typen und ihre enthaltenen Einschränkungen können innerhalb eines Elements oder Attributs als lokale unbenannte Datentypen definiert werden. • Globale einfache Datentypen kann man als direkte Kind-Elemente von schema definieren und muss sie benennen. <simpleType final = (#all | List of (list | union | restriction)) name = NCName > Content: (annotation?, (restriction | list | union) </simpleType>

  29. Einfache Datentypen:Abgeleitete einfache Typen Eine Ableitung durch … • … restriction resorts to the facets in order to list the properties. <restriction base = QName > Content: (annotation?, (simpleType?, (minExclusive | minInclusive | maxExclusive | maxInclusive | totalDigits | fractionDigits | length | minLength | maxLength | enumeration | whiteSpace | pattern)*)) </restriction>

  30. Einfache DatentypenAbgeleitete einfache Typen Eine Ableitung durch … • … Auflistung erstellt einen Datentyp für eine XML Liste, deren Einheiten jeweils gültige Werte für diesen Listendatentyp sein müssen. <list itemType = QName > Content: (annotation?, simpleType?) </list>

  31. Einfache DatentypenAbgeleitete einfache Typen Eine Ableitung durch … • … Vereinigung kombiniert die Wertebereiche der aufgelisteten Datentypen (membertypes). <union memberTypes = List of QName > Content: (annotation?, simpleType*) </union>

  32. Einfache DatentypenLokale einfache Datentypen • Die vordefinierten einfachen Typen werden durch die Angabe von weiteren genaueren Einschränkungen abgeleitet. • Diese Einschränkungen sind dann nur innerhalb ihres Eltern-Elements/-Attributs gültig. <SalesReport> ... <FiscalYear> <Year>2012</Year> <Category>Merchandise</Category> <Turnover>871.45</Turnover> <PrevYear>1853.45</PrevYear> <Diff>-982.00</Diff> </FiscalYear> </SalesReport>

  33. Einfache DatentypenLokale einfache Datentypen <xs:element name="Year"> <xs:simpleType> <xs:restriction base="xs:gYear"> <xs:minInclusive value="2010"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="Category"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Books"/> <xs:enumeration value="Merchandise"/> </xs:restriction> </xs:simpleType> </xs:element>

  34. Einfache DatentypenGlobale einfache Datentypen • Globale einfache Datentypen werden in der gleichen oder in einer externen XML Schema-Datei definiert. • Sie können sowohl in Elementen wie auch Attributen (lokal/global) referenziert und auch weiter eingeschränkt werden. ... <!-- Global elements --> <xs:element name="Turnover" type="MoneyType"/> ... <!-- Global simple types --> <xs:simpleType name="MoneyType"> <xs:restriction base="xs:decimal"> <xs:totalDigits value="6"/> <xs:fractionDigits value="2"/> </xs:restriction> </xs:simpleType> </xs:schema>

  35. Komplexe Typen Grundlegende Idee AbleitungdurchErweiterung AbleitungdurchEinschränkung

  36. Komplexe TypenGrundlegende Idee • Globale komplexe Typen erlauben die Definition einer Struktur mit mehreren Elementen und auch Attributen, die dann von Elementen im type-Attribut referenziert werden. • Wie bei einfachen Datentypen ist es möglich, neue lokale und globale komplexe Typen durch Ableitung (Einschränkung, Erweiterung) zu erstellen.

  37. Komplexe TypenGrundlegende Idee <complexType abstract = boolean : false block = (#all | List of (extension | restriction)) final = (#all | List of (extension | restriction)) mixed = boolean : false name = NCName > Content: (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?)))) </complexType>

  38. Komplexe TypenGrundlegende Idee • Einen globalen komplexen Typ setzt man am besten für Elemente mit gleicher oder ähnlicher Datenstruktur und anderem Namen ein. • Mit zusätzlicher Ableitung kann man dann weitere Verfeinerungen lokal angeben.

  39. Komplexe Typen AbleitungdurchErweiterung • Diese Ableitungstechnik ermöglicht die Vererbung in einem objektorientierten Stil. • Bei der Erweiterung fügt man neue Elemente oder Attribute an. <extension base = QName > Content: (annotation?, ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))) </extension>

  40. Komplexe TypenAbleitungdurchErweiterung <xs:element name="BusinessCustomer"> <xs:complexType> <xs:complexContent> <xs:extension base="CustomerType"> <xs:sequence> <xs:element name="ContactPerson“ type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>

  41. Komplexe TypenAbleitungdurchErweiterung

  42. Komplexe TypenAbleitungdurchEinschränkung <restriction base = QName > Content: (annotation?, (group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?)) </restriction> • Bei der Einschränkung kann man Untermengen von Feldern bilden oder die Verwendung von Attributen (required -> optional -> prohibited) verändern. • Während das extension-Element die angehängten und neuen Definitionen enthält, listet die Einschränkung die übrigbleibende Struktur auf und kann dabei auch weitere Einschränkungen bzgl. der Kardinalität vorgeben.

  43. Schlüssel und Verweise Schlüssel Referenzen Felder und Selektoren

  44. Schlüssel und Verweise: • Schlüssel und Verweise (Fremdschlüssel) kann man verwenden, um relationale Strukturen in XML (Schema) abzubilden.

  45. Schlüssel und VerweiseSchlüssel • Ein Feld (Element/Attribut), das als key definiert ist, • muss einen einzigartigen Wert innerhalb des Gültigkeitsbereichs des definierenden Eltern-Elements enthalten und • muss auch im XML-Instanzdokument vorhanden sein. • Ein Feld mit einem unique-Wert braucht dagegen nicht in der XML-Datei enthalten zu sein.

  46. Schlüssel und VerweiseSchlüssel <unique name = NCName > Content: (annotation?, (selector, field+)) </unique> <key name = NCName > Content: (annotation?, (selector, field+)) </key>

  47. Schlüssel und Verweise: Schlüssel • Die folgende XML-Datei besitzt ein eher relationales Format anstelle einer mehrschichtigen Hierarchie. • Jede Entität ist in einer eigenen Liste gespeichert, wobei der Schlüssel innerhalb des alles umschließenden Catalog-Elements und – abgesehen vom obersten Element Category– eine Referenz auf die nächsthöhere Ebene besitzt: Product -> SubCategory -> Category.

  48. Schlüssel und VerweiseSchlüssel

  49. Schlüssel und Verweise: Schlüssel

  50. Schlüssel und Verweise: Referenzen <keyref name = NCName refer = QName > Content: (annotation?, (selector, field+)) </keyref> Ein Fremdschlüssel referenziert einen Schlüssel innerhalb des Gültigkeitsbereichs des Elements, das diesen Schlüssel enthält.

More Related