XML XML (extensible Markup Language) Beschreibt den Inhalt und nicht die Präsentation. Unterschiede zu HTML: Neue Tags können definiert werden. Strukturen können eine willkürliche Tiefe haben. Ein XML Dokument kann eine optionale Grammatikbeschreibung beinhalten. Regelung der Präsentation durch Cascade Style Sheets XSL Basis Syntax Basiskomponenten: Benutzerdefinierte Tags: Starttag <person> Endtag </person> Die Struktur zwischen den Tags wird als Content bezeichnet. Der Ausdruck Subelement beschreibt auch die Relation zwischen einem Element und seinen Komponenten. Die Darstellung von Mengen wird durch Wiederholung der Elemente mit demselben Tag realisiert. Basis Syntax Alle Daten werden als Text behandelt. Daten werden oft als PCDATA (Parsed Character Data) beschrieben. XML nutzt Unicode. <person> <name> Alan </name> <age> 42 </age> <email> agb@abc.com </email> </person>
XML Attribute Entsprechen Eigenschaften (property). Sind als (name, value) Paar definiert. Sind frei wählbar. Ihr Wert ist immer ein String. Dürfen nur einmal in einem Tag vorkommen. Ermöglichen Vieldeutigkeit durch verschiedene Repräsentationsmöglichkeiten von Daten: <person> <name> Alan </name> <age> 42 </age> <email> agb@abc.com </email> </person> Well-Formed Ein XML-Dokument ist wohl-geformt, wenn es die folgenden Bedingungen erfüllt: 1.Tags müssen passend geschachtelt sein. 2. Attribute müssen einzigartig sein. <person name= Alan age= 42 email= agb@abc.com /> Transformation von ssd nach XML Die Transformation von ssd nach XML ist in der Regel einfach. Ein Problem ist die Mehrdeutigkeiten, die durch Attribute verursacht werden können. Eine Transformationsfunktion kann folgende Form haben: T(atomicvalue) = atomicvalue T({l 1 :v 1,..., l n :v n }) = <l 1 >T(v 1 )</l 1 >...<l n >T(v n )</l n > Unterschiede in XML- und ssd-graphen Ssd-Ausdrücke sind eine Menge von Label- / Teilbäume-Paaren. Ein XML-Element hat lediglich ein toplevel Label. Ssd-Ausdrücke werden durch Graphen mit Labeln an den Kanten dargestellt. XML-Elemente werden durch Graphen mit Labeln als Knoten dargestellt.
XML name Alan XML- und ssd-graphen person age 42 email agb@abc.com name Alan person age 42 ssd email agb@abc.com Referenzen in XML XML-Dokumente mit Referenzen können als Graphen beschrieben werden. Jedes Element erhält ein einzigartiges Identifikationsattribut id. Ein Element kann mit Hilfe eines Attributes idref referenziert werden. Durch diese Technik werden Repräsentationen von zyklischen rekursiven Datenstrukturen ermöglicht. <state id= s2 > <scode> NE </scode> <sname> Nevada </sname> </state> <city id= c2 > <ccode> CCN </ccode> <cname> Carson City </cname> </city> Ordnung Mischen von Elementen und Text XML-Elemente haben eine feste Ordnung. XML-Attribute haben keine Ordnung. <person firstname= John lastname= Smith /> <person lastname= Smith firstname= John /> Bei ssd ist Ordnung unwichtig, da ssd auf ungeordneten Collections basieren. Möglichkeit, PCDATA und Subelemente innerhalb eines Elements zu mischen. Grund: Einbettung von Texten in strukturierte Daten und umgekehrt. Solche Dokumente müssen vor der Umsetzung von XML nach ssd- Ausdrücken bearbeitet werden. Es müssen einige Standard Tags für PCDATA hinzugefügt werden.
Andere XML Konstrukte Kommentare Sie stellen einen Teil vom XML-Dokument dar, sind aber kein Teil vom CDATA (character data). Sie werden an die Applikation weitergeleitet. Bsp.: <!-- this ist a comment--> processing instructions (PI) Durch die PI werden im XML Dokument Befehle für Applikationen dargestellt. Ein PI hat ein Ziel (Name der Applikation) und einen optionalen freien Text. Bsp.: <?xml-stylesheet href= book.css type= text/css?> Andere XML Konstrukte Version Gibt die verwendete Version von XML an. Zusätzliche Informationen, die die Textkodierung, des Dokumentes beschreiben, können der Versionsnummer folgen. Bsp.: <?xml version= 1.0?> CDATA (character data) Werden genutzt, um escape blocks zu schreiben, die Zeichen beinhalten, die andererseits als Markup erkannt werden können. Bsp.: <![CDATA[<start>this ist an incorrect element</end>]]> Andere XML Konstrukte DOCTYPE Ein XML-Dokument kann eine optionale Document Type Definition (DTD) besitzen, welche die Dokumentengrammatik definiert. Bsp.: <!DOCTYPE name [markupdeclarations]> Document Type Definitions (DTD) Definiert die Grammatik eines XML- Dokuments. Ist ein Teil von XML. Dient als Schema für die Datenrepräsentation. <db><person> <name> Alan </name> <age> 42 </age> <email> agb@abc.com </email> </person> <person>... </person> </db>
Document Type Definitions (DTD) <!DOCTYPE db [ <!ELEMENT db (person*)> <!ELEMENT person (name,age,email)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT email (#PCDATA)> ]> root Element ist <db> <db> besteht aus einer willkürlichen Anzahl von <person> Elementen, welche aus <name>, <age> und <email> bestehen. Reguläre Ausdrücke Sind e und e reguläre Ausdrücke, dann sind e* (Iteration: null oder mehr), e + (Iteration: eins oder mehr), e? (Option: null oder eins), e e (Alternative zwischen e und e ), e, e (Konkatenation: Hintereinanderreihen von regulären Ausdrücken) auch reguläre Ausdrücke. DTDs als Grammatik DTDs als Schema Eine DTD ist eine kontextfreie Grammatik. Eine DTD kann Rekursionen enthalten. <!ELEMENT node (leaf (node, node))> <!ELEMENT leaf (#PCDATA)> <node> <node> <node> <leaf> 1 </leaf> </node> <node> <leaf> 2 </leaf> </node> </node> <node> <leaf> 3 </leaf> </node> </node> DTDs können zu einem gewissen Grad als Schema genutzt werden. Probleme bei der Repräsentation: Beschränkung auf die definierten Komponenten. Beschränkung aufgrund der starren, in der DTD definierten, Anordnung der Komponenten.
DTDs als Schema <!DOCTYPE db [ <!ELEMENT db (r1*, r2*)> <!ELEMENT r1 (a,b,c)> <!ELEMENT r2 (c,d)> <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> <!ELEMENT d (#PCDATA)> ]> <db><r1><a> a1 </a><b> b1 </b><c> c1 </c></r1> <r1><a> a2 </a><b> b2 </b><c> c2 </c></r1> <r2><c> c2 </c><d> d2 </d></r2> <r2><c> c3 </c><d> d3 </d></r2> <r2><c> c4 </c><d> d4 </d></r2> </db> Deklarieren von Attribute in DTDs In DTDs könne Attribute deklariert werden. Alle Attribute sind vom Typ CDATA. <product> <name language= French department= music > trompette six trous </name> <price currency= Euro > 420.12 </price> </product> <!ATTLIST name language CDATA #REQUIRED department CDATA #IMPLIED> <!ATTLIST price currency CDATA #IMPLIED> Deklarieren von Attributen in DTDs #REQUIRED: dieses Attribut wird gebraucht. #IMPLIED: dieses Attribut ist optional. Wichtige Deklarationstypen: ID Deklariert das spezielle Attribut, das den einzigartigen Bezeichner einer Entität definiert. IDREF Der Wert dieses Attributs ist der Bezeichner eines anderen Elements. IDREFS Der Wert ist eine Liste von Bezeichnern, die durch Leerzeichen voneinander getrennt werden. Deklarieren von Attributen in DTDs EMPTY Das Element mit diesem Attribut ist leer. ENTITY Zum Referieren von externen XML Dokumenten. Durch das Verwenden eines ENTITY lassen sich externe Daten in das aktuelle XML Dokument einfügen.
Beispiel <?xml version 1.0?> <!DOCTYPE report[ <!ENTITY %abstract SYSTEM /u/abitebou/lebook/abstract > <!ENTITY %content SYSTEM /u/suciu/lebook/lebook > ]> <report> <meta keywords= xml,www,web,semistructured author= Abiteboul,Buneman,Suciu date= 25.12.98 /> <title>data on the Web</title> %abstract; %content; </report> Validität von XML-Dokumenten Ein valides XML-Dokument erfüllt folgende Eigenschaften: Es verfügt über eine DTD. Es hält sich an die DTD. Es hält die schwachen Erfordernisse für Bezeichner und Referenzen ein: Die Werte von allen Attributen vom Typ id müssen verschieden sein. Alle Referenzen vom Typ idref und idrefs müssen sich auf ein existierendes id Attribut beziehen. Die DTD schränkt die Typen des referenzierten Elements nicht ein. Einschränkungen der DTDs als Schema DTD geben eine festen Ordnung vor. Kein atomaren Typen (int, ) vorhanden außer PCDATA. Keine Bereichspezifikationen (von 1 bis 72) Der Typ, der mit einem Element verknüpft ist, ist global. DTDs beschränken den Typ des Attributs idrefs nicht. Verschiedene Typen von idrefs. aus der Datenbank Sicht: mangelhafte Typisierung durch DTDs. Navigation Ermöglichung der Navigation durch das ganz Web durch: XML Links Sind Elemente mit Attributen (xml:link), die das Verlinken regeln. Reichhaltiger Verlinkungsprozess: Ein Link zwischen einem Element in einem Dokument A und einem Dokument B kann extern definiert werden. XML Pointers Kein Standard.
DCD (Document Content Description) Präzisere Typisierung der XML Daten als DTD. Typisierung von Terminalelementen (PCDATA). Beschränkungen http://www.w3.org/2001/xmlschema wie Bereiche können definiert werden. Verschiedene Datentypen. Spezifikation von default-werten. Spezifikation von relationships wie z.b. Subkategorien oder is-an-instance-of. XML Schema Ein XML Schema besteht aus Typdefinitionen und Elementdeklarationen. Diese geben die Gültigkeit von wohlgeformten Elementen und Attributinformationesobjecten (XML- Infoset) an. Des Weiteren spezifizieren diese Augmentierungen zu diesen Objekten und deren Nachkommen. Beispiel <xs:complextype name="purchaseordertype"> <xs:sequence> <xs:element name="shipto" type="usaddress"/> <xs:element name="billto" type="usaddress"/> <xs:element ref="comment" minoccurs="0"/> <xs:element name="items" type="items"/> </xs:sequence> <xs:attribute name="orderdate" type="xs:date"/> </xs:complextype> RDF (Resource Description Framework) Repräsentation von Metadaten in XML Bessere Tauglichkeit für Suchmaschinen im Bereich des Entdeckens von Ressourcen. Katalogisierung von Inhalt und Inhaltsbeziehungen einer Web Seite. Erlaubt intelligenten Software-Agenten, Wissen zu teilen und auszutauschen. Besteht aus Datenmodell und Syntax Das Datenmodell ist ein Kanten-beschrifteter Graph. Knoten heißen resources, Kantenbeschriftung properties und Kanten statement. Quelle: http://www.w3.org/tr/2004/per-xmlschema-1-20040318/
RDF (Resource Description Framework) Erweiterung des Basisgraphenmodell Durch Container (bag, Sequenz oder Alternative). Durch Statements höherer Ordnung. <rdf:description id= &o1 > <person> <rdf:description id= &o2 > <name> Alan </name> <age> 42 </age> <email> agb@abc.com </email> </rdf:description> </person> </rdf:description> Stylesheets Umwandeln der XML Daten in HTML Transformationssprache XSL Cascading Style Sheets (CSS) Im XML Dokument eingebettet: <STYLE TAG= address > <FONT-SIZE V=10> <FONT-FAMILY V= Times New Roman > </STYLE> Mit processing instructions kann ein Stylesheet dem XML Dokument angehängt werden: <?STYLESPEC company-desc style23.ssh?> SAX und DOM Zwei APIs für XML Dokumente: SAX (Simple API for XML) Standard für das Parsen von XML. Mehr Syntax getrieben. Liest den Fluss von XML Daten und parst diese. Ermittelt beim Interpretieren von Tags Events. Diese Events werden an die Applikationen zurückgesendet. SAX und DOM DOM (Document Object Model) Kompiliert das XML Dokument und konstruiert eine Baum Darstellung für dieses. Bietet eine objekt-orientierte Sicht des XML Dokuments. Jedes Dokument definiert eine Schnittstelle, die dessen Verhalten spezifiert. Auf die Daten wird via Interface zugegriffen. Interfaces sind: Node Subelement Attribute Character-Data