Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

XML – Schema (DTD).

Ähnliche Präsentationen


Präsentation zum Thema: "XML – Schema (DTD)."—  Präsentation transkript:

1 XML – Schema (DTD)

2 Übersicht Über XML XML – Dokumente Namensräume Was ist XML?
Welche Ziele werden verfolgt? XML – Dokumente Wohlgeformtheit Namensräume Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

3 Übersicht XML – Schema Anwendungsbeispiel: Aufbau einer DTD
XML-Schema für dieses Proseminar Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

4 Über XML - Was ist XML? Die XML (Extensible Markup Language) ist eine Grammatik, die XML-Dokumente beschreibt. Über die Regeln der XML hinaus, können weitere formuliert werden, und zwar in einem XML-Dokument selbst. Die XML-Grammatik wird in diesem Fall erweitert. Da die zusätzlichen Regeln in der XML-Grammatik vorgenommen werden, spricht man bei XML auch von einer Metagrammatik. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

5 Über XML - Welche Ziele werden verfolgt?
XML soll sich im Internet auf einfache Weise nutzen lassen. XML soll ein breites Spektrum von Anwendungen unterstützen. XML soll zu SGML kompatibel sein. Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten. Die Anzahl optionaler Merkmale in XML soll minimal sein, idealerweise Null. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

6 Über XML - Welche Ziele werden verfolgt?
XML-Dokumente sollten für Menschen lesbar und angemessen verständlich sein. Der XML-Entwurf sollte zügig abgefasst werden. Der Entwurf von XML soll formal und präzise sein. XML-Dokumente sollten leicht zu erstellen sein. Knappheit von XML-Markup ist von minimaler Bedeutung. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

7 XML – Schema (DTD) XML - Dokumente

8 XML - Dokumente Definition: A data object is an XML document if it is well-formed, as defined in this specification. A well-formed XML document MAY in addition be valid if it meets certain further constraints. [ Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

9 XML – Dokumente (Wohlgeformtheit)
Definition: A textual object is a well-formed XML document if: Taken as a whole, it matches the production labeled document. It meets all the well-formedness constraints given in this specification. Each of the parsed entities which is referenced directly or indirectly within the document is well-formed. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

10 XML - Dokumente Produktionsregel für ein Dokument:
document ::= prolog element Misc* - Char* RestrictedChar Char*; Enthält Informationen über das Dokument Kommentare Verarbeitungshinweise Wurzelelement - enthält Informationen des Dokuments Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

11 XML - Dokumente Allgemeines: XML ist case-sensitive Namen:
Man sollte sich an die üblichen Konventionen halten. Namen dürfen nicht mit einer Schreibweise von XML beginnen. Der Doppelpunkt sollte nicht verwendet werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

12 XML - Dokumente Allgemeines:
Folgende Zeichen dürfen ausschließlich für markup verwendet werden: ", ', <, >, & Anstelle von ihnen kann " , &apos; , < , &gt, & verwendet werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

13 XML - Dokumente Allgemeines:
Inhalte von CDATA-Abschnitten, Kommentaren und processing instructions werden nicht interpretiert. D.h. die oben genannten Zeichen können dort verwendet werden. Der Inhalt wird, außer bei Kommentaren, unverändert an die verarbeitende Anwendung weitergegeben. Deklaration eines CDATA Abschnittes: <!CDATA[ [Inhalt] ]]> Das Fragment ]]> darf nicht im Inhalt vorkommen Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

14 XML - Dokumente Allgemeines: Deklaration eines Kommentars:
Die Zeichenkette -- darf nicht im Kommentar vorkommen. Bezeichner darf nicht mit xml anfangen. Deklaration einer processing instruction: <? [Bezeichner der Anwendung] [Anweisung] ?> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

15 XML - Dokumente Produktionsregel für ein Dokument:
document ::= prolog element Misc* - Char* RestrictedChar Char*; Enthält Informationen über das Dokument Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

16 XML - Dokumente Prolog:
Kann am Anfang eine Angabe zur XML-Version enthalten. Kann Angaben über den Dokumenttyp enthalten. Kann Kommentare und processing instructions enthalten. (MISC) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

17 XML - Dokumente Produktionsregel für ein Dokument:
document ::= prolog element Misc* - Char* RestrictedChar Char*; Kommentare Verarbeitungshinweise Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

18 XML - Dokumente Angabe zur XML-Version:
<?xml version = "1.1" encoding = "UTF-8" standalone="yes" ?> Versionsnummer Zeichensatz (optional) Gibt einen Hinweis, ob es Verweise auf externe Quellen gibt (optional) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

19 XML - Dokumente Angabe zum Dokumententyp:
<!DOCTYPE [Name] [Verweis auf externe Quelle] [Deklarationen] > [Name] muss mit dem Namen des Wurzelelementes übereinstimmen. [Deklaration] enthält die Deklarationen einer DTD (interne Deklaration) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

20 XML - Dokumente Angabe zum Dokumententyp:
<!DOCTYPE [Name] [Verweis auf externe Quelle] [Deklarationen] > [Verweis auf externe Quelle] hat folgendes Format: SYSTEM "[URI]" oder PUBLIC "[öffentlicher Bezeichner] [URI]" Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

21 XML - Dokumente Bsp.: <!DOCTYPE wurzel PUBLIC "-//ich//dtd//de"
" oder <!DOCTYPE wurzel SYSTEM " Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

22 XML - Dokumente Produktionsregel für ein Dokument:
document ::= prolog element Misc* - Char* RestrictedChar Char*; Wurzelelement - enthält Informationen des Dokuments Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

23 XML - Dokumente Elemente können leer sein, oder
Zeichenreferenzen (&#x132), Entityreferenzen (&text;), Text, weitere Elemente enthalten. Zudem können Attribute angegeben werden. &#x132: ä Text ohne < & Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

24 XML - Dokumente Ein leeres Element: <[Name] [Attribute] />
Element mit Inhalt: <[Name] [Attribute] > [Inhalt] </[Name]> Der Name im Start-Tag und im End-Tag müssen identisch sein. Sie geben den Typ des Elementes an. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

25 XML - Dokumente Darstellung von Attributen: [Attributname] = "[Wert]"
Attribute können nur in Start-Tags oder leeren Elementen stehen, und dürfen dort nur einmal erscheinen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

26 XML - Dokumente Bsp.: <crlf /> Bsp.:
<anfang xml:lang="de" echt = "wahr"> </anfang> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

27 XML - Dokumente Korrekte Verschachtelung:
Das Wurzelelement ist Inhalt von keinem anderen Element – es ist einmalig. Für jedes Nicht-Wurzelelement existiert ein anderes Element, dessen Inhalt es ist, Elter genannt. Es ist aber kein Inhalt von einem weiteren Element, das ebenfalls Inhalt des Elters ist. Die Elemente- Hierarchie ist ein Baum Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

28 XML - Dokumente Bsp.: <?xml version = "1.0" ?>
<person geschlecht = "m"> <vorname>Hans</vorname> <nachname>Meier</nachname> </person> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

29 XML – Schema (DTD) Namensräume

30 Namensräume Elemente mit gleichen Namen könnten unterschiedliche Bedeutung haben. Ununterscheidbarkeit für verarbeitende Anwendung Namenskonflikte Lösung: Namensräume Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

31 Namensräume Namensräume werden in dem Element festgelegt, in dem sie gelten sollen. <element xmlns:[Präfix] = "[IRI]"> </element> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

32 Namensräume Die Namen von Elementen und Attributen, sowie die Attributwerte werden zu qualified names (QNames) erweitert. Dieser besteht aus dem Namensraumbezeichner und dem lokalen Namen, die beide durch einen ":" betrennt sind. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

33 Namensräume Bsp.: <stadt>
<bauten:bank xmlns:bauten = " <bauten:eigentuemer bauten:person="nein"> Geld eG </bauten:eigentuemer> </bauten:bank> <moebel:bank xmlns:moebel = " /> </stadt> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

34 Namensräume Es können beliebig viele Namensräume deklariert werden.
IRIs müssen sich unterscheiden, da sonst ihre Namensräume als identisch angesehen werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

35 Namensräume Es kann ein Namensraum als Default-Namensraum festgelegt werden, d.h. einen Namensraum, dem alle Elemente zugeordnet werden, die nicht ausdrücklich einem Namensraum zugeordnet sind. Default-Namensraum: <element xmlns="[IRI]"> Attribute müssen einem Namensraum immer explizit zugeordnet werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

36 Namensräume Bsp.: <stadt>
<bank xmlns= " <eigentuemer person="nein"> Geld eG </eigentuemer> </bank> <moebel:bank xmlns:moebel = " /> </stadt> Person gehört keinem Namensraum an. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

37 XML – Schema (DTD) Aufbau einer DTD

38 Aufbau einer DTD Die "document type definition" legt den Dokumenttyp fest. Sie ist eine Grammatik für eine Klasse von Dokumenten. Diese Definition schränkt somit die Menge möglicher XML - Dokumente ein, indem sie den Aufbau des Dokumentes angibt. Entspricht das Dokument den Vorgaben der DTD, so wird es als gültig ("valid") bezeichnet. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

39 Aufbau einer DTD Vorteile:
allen Dokumenten liegt eine vorgegebene Struktur zugrunde es liegt ein gewisser Grad an Einheitlichkeit vor Dokumente sind leichter zu verarbeiten Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

40 Aufbau einer DTD Eine Dokumententyp-Definition kann intern (in dem XML-Dokument) oder extern (in einer separaten Datei) erfolgen. Folgendes lässt sich in einer DTD deklarieren: Elemente Attributlisten für Elementen Entities Notationen Zwischen den einzelnen Deklarationen sind Kommentare und "processing instructions" erlaubt. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

41 Aufbau einer DTD (Elemente)
Deklaration von Elementen: <!ELEMENT [Name] [Inhalt] > Der Name des Elementes gibt den Elementtyp an. Er muss den allgemeinen Regeln für Namen entsprechen. Jeder Elementtyp darf nur einmal deklariert werden. In diesem Abschnitt wird mit einem Element eine Instanz des Elementtyps bezeichnet Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

42 Aufbau einer DTD Deklaration von Elementen:
<!ELEMENT [Name] [Inhalt] > Deklaration von leeren Elementtypen: <!ELEMENT [Name] EMPTY> Bsp.: <!ELEMENT crlf EMPTY> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

43 Aufbau einer DTD Deklaration von Elementen:
<!ELEMENT [Name] [Inhalt] > Deklaration von Elementtypen, die Text enthalten können: <!ELEMENT [Name] (#PCDATA) > Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

44 Aufbau einer DTD Deklaration von Elementen:
<!ELEMENT [Name] [Inhalt] > Deklaration von Elementtypen, die jedes beliebige in der DTD deklarierte Element in beliebiger Reihenfolge und Anzahl enthalten können: <!ELEMENT [Name] ANY > Elemente dieses Elementtyps dürfen auch Text enthalten. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

45 Aufbau einer DTD Deklaration von Elementen, die neben Text nur eine eingegrenzte Menge an Elementtypen enthalten dürfen: <!ELEMENT [Name] (#PCDATA | [Typ a] | .. | [Typ x])> Jeder Typ darf nur einmal in der Deklaration erscheinen. Ansonsten ist die Anzahl der Typen nicht beschränkt. Ein Typ kann auch eine Entity-Referenz – vorgefertigter Text sein. Ein Element darf von jedem angegebenen Typ beliebig viele Elemente in beliebiger Reihenfolge enthalten. Sonderfall: Element, dass nur Text enthält. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

46 Aufbau einer DTD Notation einer Reihung (Sequenz):
([Typ 1], [Typ 2] , .. , [Typ n]) Die Elemente der angegeben Typen müssen in der Reihenfolge stehen, in der sie notiert werden. Jeder Typ muss so oft vorkommen, wie angegeben. Typen dürfen mehrfach erscheinen. Die Reihung darf nicht leer sein. [Typ x] kann ein Elementtyp aber auch wieder eine Reihung oder eine Liste von Alternativen sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

47 Aufbau einer DTD Notation einer Liste von Alternativen:
([Alternative a] | [Alternative b] | .. | [Alternative x]) An Stelle der Liste darf eine der Alternative stehen. Jede Alternative darf nur einmal erscheinen. Die Liste darf nicht leer sein. Eine Alternative kann sowohl ein Element als auch eine Reihung sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

48 Aufbau einer DTD Angaben zur Häufigkeit der Vorkommen:
[Typ] [Häufigkeit] bei keiner Angabe muss genau ein Element vorkommen. '?' bedeutet, dass ein Element vorkommen darf (optional 0/1) '+' bedeutet, dass mindestens ein Element vorkommen muss. Nach oben ist die Anzahl nicht beschränkt. (1..n) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

49 Aufbau einer DTD Angaben zur Häufigkeit der Vorkommen:
[Typ] [Häufigkeit] '*' bedeutet, dass beliebig viele Elemente dieses Typs vorkommen dürfen, auch kein Element.(0..n) [Typ] kann auch eine Reihung oder Alternativliste sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

50 Aufbau einer DTD Deklaration von Elementen, die nur ausgewählte Elemente in vorgegebener Reihenfolge und Anzahl beinhalten. (Kein Text!): <!ELEMENT [Name] [Kinder]> [Kinder] ist dabei entweder eine Reihung, eine Liste von Alternativen, oder ein Elementtyp. Trotz der beliebigen Schachtelung von Reihungen und Alternativlisten kann der Inhalt des Elementes nur aus weiteren Elementen (und Entities) bestehen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

51 Aufbau einer DTD (Entities)
Es gibt folgende Arten von Entities: interne und externe analysierte (parsed) und nicht analysierte (unparsed) Entities und Parameter-Entities Deklaration von Entities: <!ENTITY [%]? [Name] [Inhalt]> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

52 Aufbau einer DTD Als interne (Parameter-)Entities werden diejenigen bezeichnet, die ihre Ersetzung direkt in ihrer Definition angeben. Die Ersetzung kann aus Text und (Parameter-) Entities-Referenzen bestehen, das Entity darf sich aber nicht selbst referenzieren. Bsp.: <!ENTITY aussage "Er rief: &Ruf;"> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

53 Aufbau einer DTD Externe (Parameter-)Entities verweisen auf einen Inhalt, der sich außerhalb der Datei befindet, in der sie definiert werden. Der Verweis besteht entweder aus einer URI oder einem öffentlichen Bezeichner (public identifier) und einer URI. Bsp.: <!ENTITY ruf SYSTEM " <!ENTITY ruf PUBLIC "_//..//..//.." SYSTEM " Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

54 Aufbau einer DTD Nur externe Entities können nicht analysierte (unparsed) Entities sein. Der Inhalt von nicht analysierten Entities wird nicht weiter ausgewertet, sondern lediglich an die verarbeitende Anwendung mitsamt der dazugehörigen Notation weitergegeben. Jedes Entity, dass nicht ein nicht analysiertes Entity ist, ist ein analysiertes Entity. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

55 Aufbau einer DTD In der Definition wird an die Quellenangabe das Schlüsselwort "NDATA" und ein Name angehängt. Dieser gibt den Namen der zugehörigen Notation an. Bsp.: <!ENTITY bild SYSTEM " NDATA [Formatname]> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

56 Aufbau einer DTD Parameter-Entities können nur innerhalb einer externen DTD verwendet werden. Im Gegensatz zu Entities können sie Nichtterminalsymbole enthalten und zur Strukturierung der DTD eingesetzt werden. Bei der Deklaration wird dem Namen ein %-Zeichen voran gestellt. Mit einer Parameter-Entity-Referenz kann auf das Entity zugegriffen werden. %[Name]; Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

57 Aufbau einer DTD Bsp.: <!ENTITY % farben SYSTEM "../farben.dtd" > %farben; (Hiermit wird der gesamte Inhalt der angebenen DTD importiert.) Bsp.: <!ENTITY % person "name , vorname"> <!ELEMENT angestellter (%person; , gehalt)> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

58 Aufbau einer DTD Für jedes XML-Dokument gibt ein Dokument-Entity.
Dieses hat keinen Namen. Sein Inhalt ist das XML-Dokument selbst. Es dient als Anfangspunkt bei der Auswertung des Dokumentes. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

59 Aufbau einer DTD (Notationen)
Zu jedem nicht analysierten Entity muss es eine Notation geben, die den Namen trägt, der bei der Deklaration angegeben wurde. Die Notation enthält Information über das Format des Entity-Inhalts und wird, wenn ein nicht analysiertes Entity referenziert wird, neben dem Inhalt dieses Entitys übergeben. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

60 Aufbau einer DTD Deklaration von Notationen:
<!NOTATION [Name] [Quellenangabe] > Die Quellenangabe kann eine URI und/oder ein öffentlicher Bezeichner sein, über die man Angaben über das Format enthält. Bsp.: <!NOTATION BMP PUBLIC "+//ISBN ::Graphic Notation//NOTATION Microsoft Windows bitmap//EN" > Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

61 Aufbau einer DTD (Attributlisten)
Mit Hilfe von Attributlisten können Elementen um zusätzliche Informationen erweitert werden, die nicht zum Inhalt zählen sollen. Jede Attributliste bezieht sich immer nur auf ein Element. Jedoch kann es mehrere Attributlisten geben, die sich auf ein und dasselbe Element beziehen. In diesem Fall werden alle Attributlisten vereinigt. Attribute sollten in erster Linie nur der Datenverarbeitung dienen. Für Informationen, die ausgegeben werden sollen eigenen sich ggf. Elemente besser. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

62 Aufbau einer DTD Deklaration von Attributlisten: <!ATTLIST [Name]
([Attributname] [Attributtyp] [Attribut-Vorgabe])*> [Name] ist der Name des Elementes, das die Attributliste enthalten soll. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

63 Aufbau einer DTD Eine Attributliste besteht aus mehreren Attributen.
Jedes Attribut hat einen Namen und einen Attributtyp. Es gibt folgende Attributtypen: ID IDREF und IDREFS ENTITY und ENTITIES CDATA NMTOKEN und NMTOKENS NOTATIONS Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

64 Aufbau einer DTD ID: Durch ein Attribut dieses Typs kann ein Element im gesamten XML-Dokument eindeutig identifiziert werden. Für jedes Element darf es maximal nur ein Attribut von diesem Typ geben. Ein ID-Attribut muss mit "#REQUIRED" oder "#IMPLIED" gekennzeichnet sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

65 Aufbau einer DTD IDREF:
Attribute dieses Typs verweisen auf ein anderes Element. Der Wert eines IDREF-Attributes muss mit dem Wert des ID-Attributs eines Elementes im XML-Dokument übereinstimmen. IDREFS: Es gilt das gleiche wie für IDREF, nur sind mehrere Angaben von IDs möglich, die durch Leerzeichen von einander getrennt werden. Mit IDREFS können logische Abhängigkeiten dargestellt werden Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

66 Aufbau einer DTD ENTITY:
Attributen dieses Typs kann ein Entity zugeordnet werden, das in der DTD definiert wurde. ENTITIES: Attributen dieses Typs können mehrere Entities zugeordnet werden, die durch Leerzeichen von einander getrennt werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

67 Aufbau einer DTD CDATA (character data):
Attribute dieses Typs können normalen Text aufnehmen, der den XML-Regeln entsprechen muss. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

68 Aufbau einer DTD NMTOKEN:
Der Attributtyp entspricht einem String-Datentyp, der aus Buchstaben, Ziffern,".", ":", "-", oder "_" besteht. NMTOKENS: Der Attributtyp kann mehrere Zeichenketten enthalten, die jeweils dem Typ NMTOKEN entsprechen müssen, und die durch Leerzeichen getrennt sein müssen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

69 Aufbau einer DTD NOTATION:
Als Werte für diesen Attributtyp sind Namen von Notationen erlaubt, die in der DTD deklariert sind. Die zum Wert zugehörige Notation gibt an, wie das Element zu interpretieren ist, das dieses Attribut beinhaltet. Möglichen Werte, die ein Attribut dieses Typs annehmen kann, müssen aufgezählt werden. ([Notation a] | [Notation b] | .. | [Notation x]) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

70 Aufbau einer DTD vorgegebene Alternativen:
Auch für Attribute des Typs NMTOKEN kann die Menge der zulässigen Werte vorgegeben werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

71 Aufbau einer DTD Vorgaben für Attribute:
Für jedes Attribut muss eine Vorgabe vorliegen. Mit "#REQUIRED" gekennzeichnet man Attribute, die bei jedem Element angegeben werden müssen. "#IMPLIED" bedeutet, dass das Attribut wahlweise angegeben werden kann. Es kann ein Default-Wert angegeben werden. Soll dieser immer angenommen werden, so muss ihm ein "#FIXED" vorangestellt werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

72 Aufbau einer DTD Bsp.: <!ENTITY % jn "(ja | nein)" >
<!ELEMENT Rezept (Zutat+ , Zubereitung) > <!ATTLIST Rezept nr ID #REQUIRED koch IDREFS #IMPLIED bild ENTITY #IMPLIED bemerkung CDATA #IMPLIED bio %jn; #FIXED "ja" xml:lang NMTOKEN "de"> Der Wert des Attributes nr darf nicht mit einer Zahl beginnen! Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

73 XML – Schema (DTD) XML - Schema

74 XML - Schema Man kann auch XML-Dokumenttypen in XML-Schema definieren.
Vorteile: Jedes XML-Schema ist selbst ein XML-Dokument, so dass im Gegensatz zur DTD keine spezielle Syntax verwendet wird, die separate Werkzeuge zur Verarbeitung erfordert. Insbesondere lässt sich jedes XML-Schema wiederum durch ein XML-Schema validieren, ohne dass eine weitere Metaebene benötigt wird. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

75 XML - Schema Vorteile: Auch komplexe Integritätsbedingungen sind formulierbar. XML-Schema enthält eine große Zahl vordefinierter Datentypen und ermöglicht die Definition von eigenen Datentypen, wodurch eine Typprüfung möglich wird. Bei Datentypen werden Vererbung und Substitution unterstützt. Nullwerte sind, wie bei Referenzen und in Datenbanken üblich, darstellbar. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

76 XML - Schema Vorteile: Das Modularisieren und Wiederverwenden von XML-Schemata ist möglich. Benennungskonflikte können durch Verwendung von XML-Namensräumen vermieden werden. Die gültige Struktur eines XML-Dokumentes lässt sich leichter erfassen, da XML-Schemata eine bessere Strukturierung zulassen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

77 XML - Schema Namensraum für XML-Schema:
Deklarationen und Definitionen erfolgen innerhalb des schema-Elements. <xsd:schema xmlns:xsd = " [Dekl. & Def.] </xsd:schema> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

78 XML - Schema Namensraum für weitere wichtige Bestandteile, die im XML-Dokument verwendet werden können: Gewöhnlich wird dieser Namensraum xsi genannt, der für das XML-Schema xsd. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

79 XML – Schema (DT-Angabe)
Ein Dokument, gibt das Schema, das es verwendet durch die Angabe des Namensraums an. Bsp.: <?xml version = "1.1" encoding = "UTF-8" ?> <ms:postfach xmlns:ms = " <ms:brief> ... </ms:brief> </ms:postfach> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

80 XML - Schema Der Namensraum enthält aber keine Angaben über den Ort, an dem das Schema abgelegt ist. xsi:schemaLocation =" ([Namensraum] [URI])* " ordnet Namensräumen die Adresse ihre XML-Schemata zu. xsi:noNamespaceSchemaLocation =" [URI] " ordnet dem Default-Namensraum eine URI zu, unter dem das zugehörige XML-Schema zu finden sein sollte. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

81 XML - Schema Bsp.: <?xml version = "1.1" encoding = "UTF-8" ?>
<ms:postfach xmlns:ms = " xmlns:xsi = " xsi:schemaLocation = " ms <ms:brief> ... </ms:brief> </ms:postfach> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

82 XML - Schema Jedem Schema sollte ein Namensraum zugeordnet werden.
Dazu dient das Attribut targetNamespace des schema-Elements. Bsp.: <xsd:schema xmlns:xsd = " targetNameSpace = " ... </xsd:schema> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

83 XML – Schema (Elemente)
Deklaration von Elementen: <xsd:element name = "[Name]" type = "[Typ]" /> Name und Typ entkoppelt (vgl. DTD) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

84 XML – Schema (Datentypen)
Man unterscheidet komplexe Typen (können Attribute und weitere Elemente beinhalten) einfache Typen (einfache Datentypen) Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

85 XML - Schema Vordefinierte einfache Datentypen:
zeichenorientierte (string, ..) numerische (byte, integer, decimal, ..) logische (boolean) zeitorientierte (time, date, gYear, ..) XML 1.0 Typen (ID, IDREF, ENTITY, ..) Diese Datentypen sollten mit dem Namensraum des XML-Schemas gekennzeichnet werden: type = "xsd:integer" Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

86 XML – Schema (complexType)
Definition von komplexen Typen: <xsd:complexType name = "[Name]"> [Deklaration von Elementen] [Deklaration von Attributen] </ xsd:complexType> Attribut-Deklarationen finden am Ende einer komplexen Typ-Definition statt. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

87 XML – Schema (all) Die all-Gruppe:
Alle Elemente, die in der all-Gruppe deklariert sind, dürfen in beliebiger Reihenfolge instanziiert werden, aber höchstens einmal. Außerhalb der all-Gruppe darf es keine weiteren Element-Deklarationen geben. <xsd:all> [Elementdeklarationen] </xsd:all> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

88 XML – Schema (sequence)
Sequenzen: Die Inhalte einer Sequenz müssen in der Reihenfolge erscheinen, in der sie angegeben werden. <xsd:sequence> [Inhalt 1] ... [Inhalt n] </xsd:sequence> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

89 XML – Schema (choice) Auswahllisten:
Von den aufgeführten Inhalten muss ein frei wählbarer instanziiert werden: <xsd:choice> [Inhalt a] ... [Inhalt x] </xsd:choice> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

90 XML - Schema Auswahllisten und Sequenzen können beliebig geschachtelt werden. Neben der Anordnung kann auch die Häufigkeit festgelegt werden, mit der Elemente erscheinen dürfen. minOccurs gibt an, wie oft ein Element mindestens erscheinen muss (default 1; Angabe optional). maxOccurs gibt an, wie oft ein Element höchstens auftreten darf (default 1; ∞ = unbounded;Angabe optional). default gibt den Wert an, der dem Element zugeordnet wird, wenn es vorhanden, aber leer ist. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

91 XML - Schema Für Elemente gibt es die Möglichkeit einen null-Wert anzuzeigen. Diese erscheinen im XML-Dokument, können aber entgegen der Vorgaben keinen Inhalt enthalten, wohl aber Attribute. Schema: <xsd:element name ="[Name]" type = "[Typ]" nillable = "true" /> Der Inhalt ist de facto aber nicht nil (out of band nil signal). Dokument: <ms:[Name] xsi:nil="true"></[Name]> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

92 XML – Schema (Content) Bei komplexen Definitionen kann man den Inhalt festlegen: <xsd:simpleContent> [keine Elemente, aber CDATA] </xsd:simpleContent> <xsd:complexContent> [nur Elemente] </xsd:complexContent> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

93 XML – Schema (Content) Das Attribute mixed = "true" gibt an, ob zwischen den Elementen Text erlaubt ist. <xsd:complexType mixed = "true"> ... Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

94 XML - Schema Anonyme Typdefinition:
Bei der Deklaration eines Elementes wird das Attribut type nicht angegeben. Dafür erfolgt die Definition im Inhaltsbereich des Elementes: <xsd:element name=""> <xsd:complexType> [Element- und Attributdeklarationen] </xsd:complexType> </xsd:element> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

95 XML - Schema Ist bei einem Element kein Typ angegeben, aber folgt auch keine unmittelbare Typdefinition, so erhält das Attribut type den Wert xsi:anyType und das Element kann jeden Typ aufnehmen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

96 XML – Schema (Attribute)
Deklaration von Attributen: <xsd:attribute name = "[Name]" type = "[einfacher Typ]" /> Attribute können nur einfache Datentypen aufnehmen. In einem Element darf es keine zwei Attribute mit gleichen Namen geben. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

97 XML - Schema Weitere Angaben bei der Deklaration von Attributen:
Das Attribut use gibt an, wie oft das Attribut vorkommen soll. Erlaubte Werte: required: genau einmal optional: ein oder keinmal prohibited: keinmal Das Attribut default gibt den Vorgabewert des Attributs an, den das Attribut erhält, wenn es nicht angegeben wird. use muss in dem Fall den Wert optional haben. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

98 XML - Schema Weitere Angaben bei der Deklaration von Attributen:
Das Attribut fixed gibt an welchen Wert das Attribut haben muss. Wenn das Attribut nicht angegeben wird, erhält es automatisch diesen Wert. fixed und default dürfen nicht gleichzeitig vorkommen. Bsp.: <xsd:attribute name = "breite" type = "decimal" use = "optional" default = "2"> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

99 XML – Schema (attributeGroup)
Attributdeklarationen können zu Gruppen zusammen gefasst werden. <xsd:attributeGroup name = "[Name]"> [Attribut-Deklarationen oder Attributgruppen-Referenzen] </xsd:attributeGroup> Einbindung der Attribute erfolgt mit: <xsd:attributeGroup ref = "[Name]" /> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

100 XML – Schema (group) Auch Elemente können zu Gruppen zusammengefasst werden: <xsd:group> [Element-Deklarationen] </xsd:group> Bei den Element-Deklarationen können Sequenzen und Auswahllisten verwendet werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

101 XML - Schema Global deklarierte Elemente und Attribute können mit ref referenziert werden. Sie erhalten dann den gleichen Namen und Typ. Bsp.: <xsd:element ref="[Name]" minOccurs = "0" /> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

102 XML – Schema (globale Dekl.)
Elemente und Attribute, die direkt als Kind von schema deklariert werden, sind globale Elmente oder Attribute. Sie dürfen keine Referenzen enthalten, müssen also direkt einem einfachen oder komplexen Typ zugeordnet werden. Sie dürfen keine Angaben über die Häufigkeit ihres Erscheinens enthalten. Sie alle können direkt instanziiert werden, d.h. Wurzelelemente sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

103 XML - Schema Für jedes lokale Attribut oder Element kann vorgeschrieben werden, ob bei ihrer Verwendung ihr Namensraum angegeben werden muss oder kann. form = " [( qualified | unqualified )] " Der Vorgabewert ist unqualified. Für die Festlegung eines Vorgabewertes für alle lokalen Elemente oder Attribute gibt es die Attribute elementFormDefault und attributeFormDefault des schema-Elements. Diese Angaben können durch form überdeckt werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

104 XML - Schema Bsp.: <xsd:schema
xmlns:xsd = " xmlns:xsi = " xsi:targetNameSpace = " elementFormDefault = "qualified"> <xsd:element name="auto"> <xsd:complexType> <xsd:element name = "batterie" type="xsd:string" form = "unqualified" /> ... Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

105 XML – Schema (Neue Typen)
Eigene Datentypen aus bereits Vorhandenen erstellen durch: Einschränkung Erweiterung Vereinigung Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

106 XML – Schema (Einschränken)
Einfache Datentypen: Typen einschränken <xsd:simpleType name ="[Name]"> <xsd:restriction base= "[Typ]"> [Einschränkungen] </xsd:restriction> </xsd:simpleTyp> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

107 XML - Schema Einschränkungen haben folgende Form:
<xsd:[Bezeichner] value = "[Wert]" /> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

108 XML - Schema Es gibt folgende Einschränkungen:
minInclusive: Der Wert des neuen Typs muss größer-gleich dem angegebenen Wert sein. maxInclusive: Der Wert des neuen Typs muss kleiner-gleich dem angegebenen Wert sein. minExclusive: Der Wert des neuen Typs muss größer dem angegebenen Wert sein. maxExclusive: Der Wert des neuen Typs muss kleiner dem angegebenen Wert sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

109 XML - Schema totalDigits: Der Wert darf insgesamt maximal so viele Stellen aufweisen (nur für Dezimaltypen). fractionDigits:Der Wert darf maximal so viele Nachkommastellen haben (nur für Dezimaltypen). pattern: Der Wert des neuen Typs muss dem angegebenen regulären Ausdruck entsprechen. enumeration: Gibt genau einen gültigen Wert an. Der Wert des neuen Ausdrucks muss gleich einem aufgezählten Wert sein. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

110 XML - Schema length: Der Wert muss so viele Zeichen oder Elemente aufweisen. minLength: Der Wert muss aus mindestens so vielen Zeichen oder Elementen bestehen. maxLength: Der Wert darf aus maximal so vielen Zeichen oder Elementen bestehen. whiteSpace: Bedeutung steht noch nicht fest. Wert ist festgelegt (fixed) auf collapse. Es gibt auch noch preserve und replace. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

111 XML - Schema Bsp.: <xsd:simpleType name = "nummernschild" >
<xsd:restriction base = "xsd:string" > <xsd:pattern value="[A-Z]{2}\-[A-Z]{2}\-[0-9]{4}"/> </xsd:restriction> </xsd:simpleType> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

112 XML - Schema Bsp.: <xsd:simpleType name = "prim10" >
<xsd:restriction base = "xsd:integer" > <xsd:enumeration value="2"/> <xsd:enumeration value="3"/> <xsd:enumeration value="5"/> <xsd:enumeration value="7"/> </xsd:restriction> </xsd:simpleType> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

113 XML – Schema (Erweitern)
Einfache Datentypen: Typen erweitern Listen von Datentypen definieren: <xsd:simpleType name = "intlist" > <xsd:list itemType = "xsd:integer" /> </xsd:simpleType> Vorsicht bei Leerzeichen Dokument: <ms:lottozahlen> </ms:lottozahlen> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

114 XML – Schema (Vereinen)
Einfache Datentypen: Typen erweitern Vereinigung von Datentypen definieren: <xsd:simpleType name = "union" > <xsd:union memberType = "prim10 boolean" /> </xsd:simpleType> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

115 XML – Schema (Einschränken)
Komplexe Datentypen: Typen einschränken Nur die Häufigkeit, mit der deklarierte Elemente erscheinen können, kann eingeschränkt werden. Die Deklarationen aller Elemente müssen wiederholt werden, die der Attribute nicht. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

116 XML - Schema Bsp.: <xsd:complexType name = "rezept">
<xsd:element name = "zutat" type = "zutaten" maxOccurs = "unbounded" /> <xsd:element name = "zubereitung" type = "anleitung" /> </xsd:complexType > Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

117 XML - Schema <xsd:complexType name = "schnellrezept">
<xsd:complexContent> <xsd:restriction base="rezept"> <xsd:element name = "zutat" type = "zutaten" maxOccurs = "20" /> <xsd:element name = "zubereitung" type = "anleitung" /> </xsd:restriction> </xsd:complexContent> </xsd:complexType > Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

118 XML – Schema (Erweitern)
Komplexe Datentypen: Typen erweitern Neue Deklarationen können hinzugefügt werden. Bestehende Deklarationen und Hinzugefügte werden als Sequenz aufgefasst. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

119 XML - Schema Bsp.: <xsd:element name = "internationalPrice" >
<xsd:complexType> <xsd:simpleContent> <xsd:extension base = "xsd:decimal" > <xsd:attribute name = "currency" type = "xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

120 XML - Schema Bsp.: <xsd:element name = "Mofa">
<xsd:complexType> <xsd:complexContent> <xsd:extension base = "fahrrad"> <xsd:element name = "motor" type = "xsd:string" /> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

121 XML - Schema Existieren mehrere Typen, die von einander abgeleitet sind, muss mit dem Attribut xsi:type = "[Name]" in der Instanz des Elements der Typ angegeben werden. Typen können durch abstarct = "true" als abstrakt definiert werden. Dass bedeutet, dass es von ihnen keine Instanzen geben darf. Nur von den abgeleiteten Typen darf es Instanzen geben, diese müssen ebenfalls den Typ angeben. Von abstrakten Typen muss es mindestens eine Ableitung geben. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

122 XML - Schema Das Ableiten von Typen kann durch das Attribut final eingeschränkt werden. final = "restriction": Der Typ kann nicht eingeschränkt werden. final = "extension": Der Typ kann nicht erweitert werden. final = "#all": Der Typ kann weder eingeschränkt noch erweitert werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

123 XML - Schema Das Attribut block verhindert, dass von einem Typ abgeleitete Typen an Stelle von ihm benutzt werden können. block = "restriction": Kein eingschränkter Typ von ihm kann an seiner Stelle verwendet werden. block = "extension": Kein erweiterter Typ von ihm kann an seiner Stelle verwendet werden. block = "#all": Weder ein eingschränkter Typ noch ein erweiterter Typ von ihm kann an seiner Stelle verwendet werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

124 XML - Schema Vorgabewerte für das final Attribut aller Elemente eines Schemas können durch das optionale Attribut finalDefault des schema-Elements festgelegt werden. Vorgabewerte für das block Attribut aller Elemente eines Schemas können durch das optionale Attribut blockDefault des schema-Elements festgelegt werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

125 XML - Schema Das Attribut fixed macht Einschränkungen unveränderlich.
Bsp.: <xsd:simpleType name = "lottozahlen" > <xsd:restriction base = "xsd:intlist" > <xsd:length value="6" fixed = "true" /> </xsd:restriction> </xsd:simpleType> Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

126 XML - Schema Inhalte anderer Schemata zum neuen Schema hinzufügen:
<include schemaLocation = "[URI]" /> Beide Schemata, das, das eingebunden wird, und das, das ergänzt wird, müssen den gleichen Namensraum haben. Die Elemente des eingebundenen Schemas können nicht verändert werden. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

127 XML - Schema Inhalte anderer Schemata ableiten:
<redefine schemaLocation = "[URI]"> [Typen ableiten] </redefine> Die abgeleiteten Typen werden dabei überschrieben. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

128 XML - Schema Definitionen aus einem anderen Namensraum einbinden:
<import namespace = "[Namensraum]" schemaLocation="[URI]" /> Das Attribut schemaLocation ist optional. Nur global definierte komplexe Typen können importiert werden. Solch ein Ausdruck muss als erster im Schema auftauchen, vor Deklarationen und Definitionen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

129 XML - Schema Man kann auch XML-Dokumenttypen in XML-Schema definieren.
Vorteile: Jedes XML-Schema ist selbst ein XML-Dokument, so dass im Gegensatz zur DTD keine spezielle Syntax verwendet wird, die separate Werkzeuge zur Verarbeitung erfordert. Insbesondere lässt sich jedes XML-Schema wiederum durch ein XML-Schema validieren, ohne dass eine weitere Metaebene benötigt wird. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

130 XML - Schema Vorteile: Auch komplexe Integritätsbedingungen sind formulierbar. XML-Schema enthält eine große Zahl vordefinierter Datentypen und ermöglicht die Definition von eigenen Datentypen, wodurch eine Typprüfung möglich wird. Bei Datentypen werden Vererbung und Substitution unterstützt. Nullwerte sind, wie bei Referenzen und in Datenbanken üblich, darstellbar. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

131 XML - Schema Vorteile: Das Modularisieren und Wiederverwenden von XML-Schemata ist möglich. Benennungskonflikte können durch Verwendung von XML-Namensräumen vermieden werden. Die gültige Struktur eines XML-Dokumentes lässt sich leichter erfassen, da XML-Schemata eine bessere Strukturierung zulassen. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)

132 Ein XML-Schema für dieses Proseminar.
Anwendungsbeispiel Und zum Schluss: Ein XML-Schema für dieses Proseminar. Proseminar Auszeichnungssprachen WS04/05 XML - Schema (DTD)


Herunterladen ppt "XML – Schema (DTD)."

Ähnliche Präsentationen


Google-Anzeigen