XML- und Webservice- Sicherheit 2. XML 2.1 XML 1.0 und XML Schema
Gliederung 1. XML 1.0 2. XML Namespaces: URI, URL und URN 3. XML Schema Literatur: A. Tanenbaum, Computer Networks. E. R. Harold and W. S. Means, XML in a Nutshell. 3rd Edition, O Reilly Köln. J. Rosenberg and D. Remy, Securing Web Services with WS- Security, www.samspublishing.com
1. XML 1.0 - Beispiel Beispiel für ein wohlgeformtes XML-Dokument Unicode-Unterstützung Präambel <?xml version="1.0" encoding="utf-8" standalone="yes"?> <conversation> Wurzelelement <greeting>hello, world!</greeting> (nur eins!) <response> ( Dokumentwurzel) Stop the planet, I want to get off! </response> </conversation> Problem: der <response>-tag könnte in einem anderen Dokument eine andere Bedeutung haben (z.b. der http Return Code)
1. XML 1.0 - Baumstruktur <?xml version="1 1.0" standalone="yes"?> \ <conversation> <greeting> <response> Hello, world! Stop the planet, I want to get off!
1. XML - Sprachbestandteile Case-Sensitive: XML unterscheidet zwischen Groß- und Kleinschreibung Element: Beginnt mit einem Start-Tag und endet mit einem End-Tag (Bspl. <greeting>hello, world!</greeting>) Content t eines Elements: Alles zwischen dem Start-Tag und dem End- Tag, einschl. Whitespaces (Bspl.: Der Textstring Hello, world!) Markup: Gliederung des Dokuments, z.b. Tags (Bspl. <greeting> und </greeting>) Character Data: Nicht weiter strukturierter Inhalt eines Elements. Jeder internationale Schriftsatz (Kyrillisch, Chinesisch) kann verwendet werden (Bspl. Hällo, wörld!) Die XML-Sonderzeichen <, >, & und die einfachen und doppelten Anführungszeichen müssen als Entity References <, >, &, ' und "eingefügt f werden. Innerhalb von <![CDATA[ und ]]> darf jedes Zeichen vorkommen.
1. XML - Sprachbestandteile Attribute: Paar name= wert oder name= wert. Wert muss im Gegensatz zu HTML IMMER in Anführungszeichen (einfach oder doppelt) stehen. Jedes Attribut gehört zu einem XML-Element und wird innerhalb des Start- Tags notiert. Jeder Attributname darf nur einmal innerhalb eines Elements auftreten. Attributwerte sind nur Strings, und können nicht weiter strukturiert sein. Content eines Elements kann oft auch als Attribut dargestellt werden; hier gibt es keine klaren Regeln. Beispiel: <conversation> <greeting text= Hello, world! /> <response text= Stop the planet, I want to get off! /> </conversation>
1. XML - Sprachbestandteile Kommentare: Dürfen überall im Character data-teil eines Dokuments erscheinen. Sie sind in <-- und --> (genau zwei Bindestriche!) eingeschlossen. Processing Instructions: Möglichkeit der Weitergabe von bestimmten Informationen an Programme. Sie sind in <?target und?> eingeschlossen. target ist in der Regel der Name des Programms, für das die Daten bestimmt sind. Beispiele: <?xml version="1 1.0" encoding="utf-8" standalone="yes"?> <?php mysql_connect(...);?> <?javascript alert(alarm!);?>
1. XML - Sprachbestandteile XML-Deklaration: Die Deklaration <?xml version="1.0" encoding="utf-8" standalone="yes"?> bedeutet: t version="1.0": Es wird XML Version 1.0 verwendet. encoding="utf-8": Es werden Unicode-Zeichen mit variabler Codierung verwendet, die ASCII als Teilmenge enthält (Default-Wert). t) Viele andere Codierungen sind möglich (UTF-16 für Chinesisch, Japanisch, Koreanisch, ISO 8859-1 für westeuropäische Sonderzeichen, etc.) standalone="yes": Es ist nicht nötig, eine DTD oder ein XML Schema zur Validierung heranzuziehen. Der Default-Wert ist "no".
1. XML 1.0 erweitertes Beispiel Beispiel für ein wohlgeformtes XML-Dokument (2) <?xml version="1.0"?> <conversation linefeed="yes"> Hier ist eine typische englische Konversation wiedergegeben: <greeting style="italic">hello, world!</greeting> <response style="bold"> Stop the planet, I want to get off! </response> </conversation>
1. XML 1.0 - Baumstruktur <conversation> Hier ist eine <greeting> <response> linefeed="yes" " typische englische Konversation wiedergegeben: Hello, world! style="italic" Stop the planet, I want to get off! style="bold" Textknoten Attributknoten Elementknoten
2. XML Namespaces Lösung des Problems mehrdeutiger Tag-Namen: Verlängerung des Strings response durch eindeutigen Präfix Präfix ist ein Uniform Ressource Identifier (URI), der nur als String interpretiert wird (auch URLs!) Abkürzungen sind erlaubt (z.b. können URIs Zeichen enthalten, die nicht den Namenskonventionen von XML entsprechen), führen aber auch zu Problemen. <?xml version="1.0" standalone="yes"?> <conv:conversation xmlns:conv="http://conversation.org"> <conv:greeting>hello, world!</conv:greeting> <conv:response> Stop the planet, I want to get off! </conv:response> </conv:conversation>
2. XML Namespaces URI, URN, URL: URI: Uniform Ressource Identifier, kann URN oder URL sein URN: Uniform Ressource Name Weltweit eindeutiges Namensschema Beispiel: ISBN-Nummern für Bücher: urn:isbn:0-672-32651-5 Beispiel: URLs URL: Uniform Ressource Locator WWW-weit eindeutiger Ort, an dem man eine Datei finden kann stabile URLs können als URNs verwendet werden Beispiel: http://www.w3.org/2000/09/xmldsig#
XML: Überblick http://www.jeckle.de/xml/index.html
3. XML-Schema: Bücherliste Schwenk <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" text/xsl href="book book_list.xsl list.xsl"?> <book_list xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation= D:\Lehre\xml\book_list.xsd"> <book> <title> Moderne Verfahren der Kryptographie, 5. Aufl. </title> <author> A.Beutelspacher, J.Schwenk, K.Wolfenstetter </author> <year> 2003 </year> </book> <book> <title> Sicherheit und Kryptographie im Internet, 2. Aufl. </title> <author> J. Schwenk </author> <year> 2005 </year> </book> </book_ list>
3. XML Schema Beschreibt die Struktur eines XML-Dokument somit teilweise auch seine Bedeutung XML-Dokumente, deren Struktur dem XML Schema entspricht, heißen valid ( gültig ). (g g) Veraltete Alternative: Document Type Definitions (DTD) Namespace für XML Schema: xmlns:xsi= http://www.w3.org/2001/xmlschema-instance Angabe des Speicherorts des XML Schemas zum book_list- Dokument: xsi:nonamespaceschemalocation= D:\Lehre\xml\ book_list.xsd"> Wenn für das Dokument ein Namespace verwendet wird, wird der Speicherort des Schemas durch das Attribut xsi:schemalocation angegeben.
3. XML-Schema: Bücherliste Schwenk <?xml version="1.0" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> /2001/XMLS h "> <xsd:element name="book_list" type="bl"/> <xsd:complextype name="bl"> <xsd:sequence> <xsd:element name="book" type="b" maxoccurs="unbounded"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="b"> <xsd:sequence> <xsd:element name="title" type="xsd:string"/> <xsd:element name="author" type="xsd:string"/> <xsd:element name="year" type="xsd:positiveinteger"/> </xsd:sequence> <xsd:attribute te name="id" type="xsd:id" use="optional"/> </xsd:complextype> </xsd:schema>