Inhalt W3C Deutsch-Österreichisches Büro Klaus Birkenbihl W3C.DE/AT

XML-Architektur

Tutorial

Logon Webday 2003, Frankfurt, 30.09.2003

Klaus Birkenbihl

W3C Deutsch-Österreichisches Büro
c/o Fraunhofer Institut für Medienkommunikation

1. Übersicht

2. Inhalt

3. Weiterer Disclaimer

Wir beschäftigen uns also mit:

4. "Eat your own dogfood!"

Notebook

Valid XHTML 1.0! Valid CSS!

5. XML der große Integrator

6. Die Quellen von XML (I)

Jahrzehnt Dokumente und Medien Datenverarbeitung und Informatik Computernetze
(1960er) 1970er Ed Mosher, Ray Lorie, Charles F. Goldfarb entwickeln GML. Nachdem Algol 68 als ultimative Programmiersprache mehr Probleme als Lösungen liefert, besinnt man sich auf einfachere Sprachen. PASCAL und C kennen strukturierte Daten. Simula 67 legt die Grundlagen zu OOP. Kahn und Cerf basteln am Internet und entwickeln TCP-IP.
Lochkarten(80 Spalten), Assemblerprogrammierung, Bildschirme mit 80x12 Zeichen

7. Die Quellen von XML (II)

Jahrzehnt Dokumente und Medien Datenverarbeitung und Informatik Computernetze
1980er SGML wird ISO-Standard, Don Knuth entwickelt TeX. Aber es WYSIWYGt auch. Objektorientierte Programmierung ermöglicht grafische Benutzeroberflächen. C wird C++. Die Wissenschaft entdeckt Computernetze für sich: BITNET, EARN, CSNET, NSF-NET ... gegen Ende der 80er setzt sich TCP/IP als Standard durch.
PCs und Workstations lösen Großrechner ab.

8. Die Quellen von XML (III)

Jahrzehnt Dokumente und Medien Datenverarbeitung und Informatik Computernetze
1990er MS-Office etabliert Word als de facto Standard, SGML nur Insidern ein Begriff JAVA, komponentenbasierte Programmierung, CORBA Die Industrie entdeckt Internet, WWW wird Killerapplikation und ersetzt "ressource discovery" Systeme, generiert die "new Economy"
Tim Berner-Lee's HTML ermöglicht einfache Handhabung von Dokumenten im Netz
2000er XML (1998) wird die technische Basis einer Integration von Dokumenten, Medien, Datenverarbeitung und Kommunikationsnetzen

9. HTML - die Verdienste

HTML war das, worauf das Internet
und die Welt 1993 gewartet hatten

10. HTML - die Defizite

Es stellte sich bald heraus: HTML kann nicht die Basis des Web bleiben, eine Alternative ist notwendig

11. Alternativen?

Wie für HTML wählte man auch für XML SGML als Basis.
XML ist ein Subset von SGML mit:

12. Das heutige Bild

Präsentation
und Interaktion
Datenschutz
und -sicherheit
Protokolle
und Services
Datenbanken
und Wissen
im Web
  • XML Messaging und RPC:
    SOAP
  • Description of Services:
    WSDL
XML, Namensräume, XSLT, XPath, XLink, XPOINTER, XML BASE, XML Schema, DOM
Architektur

13. Wohlgeformtes XML

14. Wohlgeformtes XML: ein Beispiel

<?xml version="1.0" encoding="ISO-8859-1"?>
<my_band>
  <Bandname>Nero's Delight</Bandname>
  <musicians>
    <musician>
      <name>Michael</name>
      <instrument>Trumpet</instrument>
      <lives_in>
        <Town>Bonn</Town>
      </lives_in>
    </musician>
    <musician>
      <name>Heidrun</name>
      <instrument>Trombone</instrument>
      <lives_in>
        <Town>Köln</Town>
      </lives_in>
    </musician>

    <!-- and so on  -->

  </musicians>
</my_band>

15. Wohlgeformtes XML, die Regeln (I)

16. Wohlgeformtes XML, die Regeln (II)

17. Wohlgeformtes XML, die Regeln (III)

Dokumente, die diesen Kriterien genügen, heißen wohlgeformt.

18. Wohlgeformtes XML formt einen Baum

XML-Baum für Beispiel

19. Wohlgeformtes XML,
Zusammenfassung

20. Darstellung von XML

21. Darstellung von XML

22. Beispiel
XML-Darstellung (MS Internet Explorer)

XML im Internet Explorer

23. Beispiel XML-Darstellung (XMLSPY)

XML im XML-Spy

24. CSS und XML

Bandname  {display: block; font-size: 18pt; font-weight: bold;}
musician  {display: block; color: red; margin-top: 1em;
           font-size: 14pt;}
name      {display: block; margin-left: 1em; 
          font-weight: bold;}
instrument {display: block; margin-left: 2em; color: green;}
lives_in  {display: block; margin-left: 2em; font-style: italic;
          color: blue;}
lives_in:before {content: "Kommt aus "; 
          color: black; display: inline;}

25. CSS und XML (Beispiel)

Formatierung durch MSIE Formatierung durch Opera
Darstellung des CSS-Beispiels im MSIE Darstellung des CSS-Beispiels in Opera

26. XML-Sprachen, DTDs und XML-Schema

27. XML ist eine Metasprache

28. DTDs und XML Schema

29. Interne DTD für unser Beispiel

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE my_band [
  <!ELEMENT my_band (Bandname, musicians)>
  <!ELEMENT musicians (musician+)>
  <!ELEMENT musician (name, instrument*, lives_in?)>
  <!ELEMENT lives_in (Town, Street?)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT instrument (#PCDATA)>
  <!ELEMENT Town (#PCDATA)>
  <!ELEMENT Street (#PCDATA)>
  <!ELEMENT Bandname (#PCDATA)>
]>
<my_band>
  <Bandname>Nero's Delight</Bandname>
  <musicians>
    <musician>
...

30. XML Schema

31. XML Schema für unser Beispiel (I)

<?xml version="1.0" encoding="ISO-8859-1"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
   <element name="Bandname" type="string"/>
   <element name="Town" type="string"/>
   <element name="instrument" type="string"/>
   <complexType name="lives_inType">
      <sequence>
         <element ref="Town"/>
         <element ref="Street" 
           minOccurs="0" maxOccurs="1"/>
      </sequence>
   </complexType>
   <complexType name="musiciansType">
      <sequence>
         <element name="musician"
           type="musicianType" minOccurs="1" 
           maxOccurs="unbounded"/>
      </sequence>
   </complexType>

32. XML Schema für unser Beispiel (II)

   <complexType name="musicianType">
      <sequence>
         <element ref="name"/>
         <element ref="instrument"/>
         <element name="lives_in" type="lives_inType" 
           minOccurs="0" maxOccurs="1"/>
      </sequence>
   </complexType>
   <element name="my_band">
      <complexType>
         <sequence>
            <element ref="Bandname"/>
            <element name="musicians" type="musiciansType"/>
         </sequence>
      </complexType>
   </element>
   <element name="name" type="string"/>
</schema>

33. Gültiges XML

Anmerkung: da DTDs aus SGML stammen, lassen sich auch nicht-XML-Sprachen, wie z. B. HTML damit validieren. Deshalb gibt es auch "gültiges HTML".

34. XML Namensräume

35. XML Namensräume - wozu?

Zur Lösung dieser Art Probleme - dem Mischen von XML Vokabularen - hat W3C einen Mechanismus entwickelt, der "XML Namensräume" heißt

36. Definition von XML Namensräumen

37. Namensräume in der Praxis (I)

38. Namensräume in der Praxis (II)

39. Namensräume in der Praxis (III)

40. Mehr zu Namensräumen

41. Navigation in XML-Dokumenten: XPath

42. Der XPath-Baum

43. XPath-Ausdrücke

44. Beispiele für Lokalisierungspfade

45. XPATH-Anwendungen

46. XML mittels XML Transformieren: XSLT

47. Motivation für XSLT

Zum Namen XSLT: XSLT steht für XML Stylesheet Language Transformation. XSLT entstand im Rahmen der Entwicklung der XSL (XML Stylesheet Language). Im Laufe der Entwicklung wurde XSL in zwei selbstständige Teile zerlegt: die XSL-Formatting Objects (XSL-FO) und die XSL Transformation (XSLT).

48. Über XSLT

49. Erweiterung des XML-Beispiels

wir erweitern unser XML-Beispiel ein wenig:
<?xml version="1.0" encoding="ISO-8859-1"?>
<my_band xmlns:XLink="http://www.w3.org/1999/XLink">
  <Bandname>Nero's Delight</Bandname>
  <Bandpage XLink:href="http://www.neros-delight.de/"/>
  <musicians>
    <musician>
      <name>Michael</name>
      <instrument>Trumpet</instrument>
      <lives_in>
        <Town>Bonn</Town>
      </lives_in>
      <picture
        src="http://www.neros-delight.de/Michael%20und%20Petra%20in%20BKH.jpg"
        alt="Michael und Petra in BKH"/>
    </musician>
    <!--  -->
  </musicians>
</my_band>
Wir wollen dieses Dokument als HTML darstellen

50. XSLT, um dieses XML darzustellen (I)

XML-Instruktion, XSLT-Wurzelknoten, Output-Element

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:XLink="http://www.w3.org/1999/XLink">
   <xsl:output method="xml"
       doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
      indent="yes" encoding="ISO-8859-1"/>

51. XSLT, um dieses XML darzustellen (II)

Verarbeitung des Wurzelelements

  <xsl:template match="/">
    <html>
      <head>
        <title>
          <xsl:value-of select="/my_band/Bandname"/>
        </title>
      </head>
      <body>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>

52. XSLT,
um dieses XML darzustellen (III)

  <xsl:template match="musicians">
    <h2>Musiker</h2>
    <p>
      <table border="3"
         summary="Liste der Musiker" width="90%"
         align="center">
         <!-- der Tabellenkopf -->
         <thead align="center"
           style="font-weight: bold;
           background-color: yellow">
          <tr>
            <td>Name</td>
            <!-- ... -->
          </tr>
        </thead>
der Tabellenkörper steht auf der nächsten Seite
      </table>
    </p>
  </xsl:template>

53. XSLT, um dieses XML darzustellen (IV)

      <tbody>
        <xsl:for-each select="musician">
          <tr>
            <td width="25%">
              <xsl:value-of select="name"/>
            </td>
            <!-- ... -->
            <td bgcolor="red" align="center"
              width="20%">
              <img width="30%">
                <xsl:attribute name="src">
                  <xsl:value-of select="picture/@src"/>
                </xsl:attribute>
                <!-- ... -->
              </img>
            </td>
          </tr>
        </xsl:for-each>
      </tbody>

54. HTML-Output

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html xmlns:XLink="http://www.w3.org/1999/XLink">
  <head>
    <title>Nero's Delight</title>
  </head>
  <body>
    <!-- ... -->
      <table ...>
        <thead ...>
          <tr>
            <td>Name</td>
            <!-- ... -->
          </tr>
        </thead>
        <tbody>
          <tr>
            <td width="20%">Michael</td>
            <!-- ... -->
          </tr>
        </tbody>
      </table>
    <!-- ...  -->
  </body>
</html>

55. HTML im Browser

Beispiel für HTML Rendering

56. Beispiel 2: diese Präsentation vorher

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <!-- Style, Script -->
  </head>
  <body>
    <!-- Feste Seitenteile, Folien -->
    <div class="page">
      <h1>
        "Eat your own dogfood!"
      </h1>
      <!-- Inhalt -->
    </div>
    <!-- weitere Folien -->
  </body>
</html>

57. Ziel: (I)

<!-- ... -->
<html>
  <head>
    <!-- ... -->
  </head>
  <body>
    <!-- ... -->
    <span class="letterhead">
      <a href="#contentdir">
        Inhalt
      </a>
    </span> 
    <!-- ... -->
    <div class="page">
      <a name="page4">
      <h1>
        4. "Eat your own dogfood!"
      </h1>
    </div>
    <!-- ... -->

58. Ziel: (II)

    <div class="page">
      <a name="contentdir"/> 
      <h1>
        Inhalt
      </h1>
      <div class="content">
        <a href="#page1">1. Übersicht ...</a><br>
        <a href="#page2">2. Ziel</a> 
        <!-- ... -->
      </div>
    </div>
  </body>
</html>

59. XSLT-Auszug (I)

Generieren der Seitenreferenzen
  <xsl:template match="x:div[@class='page']>
    <a>
      <xsl:attribute name="name">
        <xsl:text>page</xsl:text>
        <xsl:number count="/*/*/*"
          from="/*/*/x:div[@class='page'][position()=2]"/>
      </xsl:attribute>
    </a>
    <xsl:copy>
      <xsl:for-each select="@*">
        <xsl:copy/>
      </xsl:for-each>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

60. XSLT Auszug (II)

Nummerieren der Überschriften
  <xsl:template match="x:div[@class='page']/x:h1">
    <xsl:copy>
      <xsl:for-each select="@*">
        <xsl:copy/>
      </xsl:for-each>
      <xsl:number count="/*/*/*"
        from="/*/*/x:div[@class='page'][position()=2]/x:h1"/>
      <xsl:text>. </xsl:text>
      <xsl:value-of select="."/>
    </xsl:copy>
  </xsl:template>

61. XSLT Auszug (III)

Erzeugung des Inhaltsverzeichnisses samt Referenz (I)
  <xsl:template match="x:body">
    <body>
      <span class="letterhead">
        <a href="#contentdir" >
          Inhalt
        </a>
      </span> 
      <xsl:apply-templates/>
Inhaltsverzeichnis auf der nächsten Seite
    </body>
  </xsl:template>

62. XSLT Auszug (IV)

Erzeugung des Inhaltsverzeichnisses samt Referenz (II)
    <h1>Contents</h1>
    <div class="content">
      <xsl:for-each
        select="x:div[@class='page'][position()>1]/x:h1">
        <a>
          <xsl:attribute name="href">
          <xsl:text>#page</xsl:text>
          <xsl:number count="/*/*/*"
            from="/*/*/x:div[@class='page'][position()=2]/x:h1"/>
          </xsl:attribute>
          <xsl:number count="/*/*/*"
            from="/*/*/x:div[@class='page'][position()=2]/x:h1"/>
          <xsl:text>. </xsl:text>
          <xsl:value-of select="."/>
        </a><br/>
      </xsl:for-each>
    </div>
  </div>

63. XSLT Eingabe nach Ausgabe

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
XSLT ist ein einfaches und mächtiges Werkzeug, um XML nach XML (oder HTML) zu übersetzen.

64. XLink

65. XLink

66. XLink, die Bestandteile

67. Einige XLINK Attribute

68. XLINK Beispiel (I)

<courseload xmlns:xlink="http://www.w3.org/1999/xlink"
            xlink:type="extended">
  <tooltip xlink:type=>
    Course Load for Pat Jones
  </tooltip>
  <person xlink:type="locator"
    xlink:href="students/patjones62.xml"
    xlink:label="student62"
    xlink:role="http://www.example.com/linkprops/student"
    xlink:title="Pat Jones" />
  <person xlink:type="locator"
    xlink:href="profs/jaysmith7.xml"
    xlink:label="prof7"
    xlink:role="http://www.example.com/linkprops/professor"
    xlink:title="Dr. Jay Smith" />
  <!-- more remote resources for professors, teaching assistants, etc. -->
  <course xlink:type="locator"
    xlink:href="courses/cs101.xml"
    xlink:label="CS-101"
    xlink:title="Computer Science 101" />
  <!-- more remote resources for courses, seminars, etc. -->
  <gpa xlink:type="resource"
    xlink:label="PatJonesGPA">3.5</gpa>

69. XLINK Beispiel (II)

  <go xlink:type="arc"
    xlink:from="student62"
    xlink:to="PatJonesGPA"
    xlink:show="new"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones's GPA" />
  <go xlink:type="arc"
    xlink:from="CS-101"
    xlink:arcrole="http://www.example.com/linkprops/auditor"
    xlink:to="student62"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Pat Jones, auditing the course" />
  <go xlink:type="arc"
    xlink:from="student62"
    xlink:arcrole="http://www.example.com/linkprops/advisor"
    xlink:to="prof7"
    xlink:show="replace"
    xlink:actuate="onRequest"
    xlink:title="Dr. Jay Smith, advisor" />

70. DOM: Das Document Object Model

71. DOM

72. DOM

73. W3C's Ansatz zu Präsentation

Nokia 7110 GPS Navigator smartphone WebPAd
headset Embedded device PDA

74. Woran W3C arbeitet

75. XSLT Version 2 und DOM Level 3

76. XHTML: HTML in XML-Philosophie

77. XForms: Forms für XML

78. CSS und XSL

79. Mehr ...

80. Mehr Informationen

XML-Buch

Inhalt

1. Übersicht
2. Inhalt
3. Weiterer Disclaimer
4. "Eat your own dogfood!"
5. XML der große Integrator
6. Die Quellen von XML (I)
7. Die Quellen von XML (II)
8. Die Quellen von XML (III)
9. HTML - die Verdienste
10. HTML - die Defizite
11. Alternativen?
12. Das heutige Bild
13. Wohlgeformtes XML
14. Wohlgeformtes XML: ein Beispiel
15. Wohlgeformtes XML, die Regeln (I)
16. Wohlgeformtes XML, die Regeln (II)
17. Wohlgeformtes XML, die Regeln (III)
18. Wohlgeformtes XML formt einen Baum
19. Wohlgeformtes XML, Zusammenfassung
20. Darstellung von XML
21. Darstellung von XML
22. Beispiel XML-Darstellung (MS Internet Explorer)
23. Beispiel XML-Darstellung (XMLSPY)
24. CSS und XML
25. CSS und XML (Beispiel)
26. XML-Sprachen, DTDs und XML-Schema
27. XML ist eine Metasprache
28. DTDs und XML Schema
29. Interne DTD für unser Beispiel
30. XML Schema
31. XML Schema für unser Beispiel (I)
32. XML Schema für unser Beispiel (II)
33. Gültiges XML
34. XML Namensräume
35. XML Namensräume - wozu?
36. Definition von XML Namensräumen
37. Namensräume in der Praxis (I)
38. Namensräume in der Praxis (II)
39. Namensräume in der Praxis (III)
40. Mehr zu Namensräumen
41. Navigation in XML-Dokumenten: XPath
42. Der XPath-Baum
43. XPath-Ausdrücke
44. Beispiele für Lokalisierungspfade
45. XPATH-Anwendungen
46. XML mittels XML Transformieren: XSLT
47. Motivation für XSLT
48. Über XSLT
49. Erweiterung des XML-Beispiels
50. XSLT, um dieses XML darzustellen (I)
51. XSLT, um dieses XML darzustellen (II)
52. XSLT, um dieses XML darzustellen (III)
53. XSLT, um dieses XML darzustellen (IV)
54. HTML-Output
55. HTML im Browser
56. Beispiel 2: diese Präsentation vorher
57. Ziel: (I)
58. Ziel: (II)
59. XSLT-Auszug (I)
60. XSLT Auszug (II)
61. XSLT Auszug (III)
62. XSLT Auszug (IV)
63. XSLT Eingabe nach Ausgabe
64. XLink
65. XLink
66. XLink, die Bestandteile
67. Einige XLINK Attribute
68. XLINK Beispiel (I)
69. XLINK Beispiel (II)
70. DOM: Das Document Object Model
71. DOM
72. DOM
73. W3C's Ansatz zu Präsentation
74. Woran W3C arbeitet
75. XSLT Version 2 und DOM Level 3
76. XHTML: HTML in XML-Philosophie
77. XForms: Forms für XML
78. CSS und XSL
79. Mehr ...
80. Mehr Informationen