XML und XSLT by usr10478

VIEWS: 0 PAGES: 38

									Mehrfache Transformation von
 XML-Dokumenten mit XSLT

          Joerg Krause
      www.joerg.krause.net
Was können Sie erwarten?

   •   Was ist XML und XSLT?
   •   Warum ist es mehr als ein Hype?
   •   Was kann man damit tun?
   •   Ein Wort zu Paradigmen: Meine Vision
       über die Zukunft der Programmierung
       und warum XML eine Rolle spielt




20.06.2002          (c) Joerg Krause 2002     2
Übersicht

   • Punkt 1: XML zum flexiblen speichern
     von Daten in ihrer natürlichen Form
   • Punkt 2: XSLT verwenden, um Daten in
     Formate zu transformieren, die von
     Menschen gelesen werden können
   • Punkt 3: Die Paradigmen der
     Programmierung revolutionieren
                                            




20.06.2002        (c) Joerg Krause 2002         3
Eine abstrakte Welt abstrakter Begriffe

   • XML = eXtensible markup language
   • XSL = eXtensible stylesheet language
   • XSLT = XSL transformation
      (es folgen weitere Akronyme)




    Zuerst ein Blick auf XML                  


20.06.2002            (c) Joerg Krause 2002       4
Warum ist XML mehr als ein Hype?

   • Eine streng definierte Sprache für die
     Speicherung von Daten
   • Intern nur ein Textformat:
         • ein offener Standard
         • Jeder Editor kann verwendet werden
         • Vollkommen plattformunabhängig
         • Leicht erweiterbar, um speziellen
           Nutzerwünschen zu entsprechen        



20.06.2002              (c) Joerg Krause 2002       5
XML für die Datenabbildung

   • Präsentiert Daten in ihrer natürlichen
     Form
   • Zuvor die konventionelle Sicht: Eine
     relationale Datenbank….




                                              



20.06.2002         (c) Joerg Krause 2002          6
Was ist falsch an relationalen DBMS?

   • Wie werden Daten heute gespeichert?
         Name                    Telefon
                                 Relation
         Ernst Müller            1
         Max Bernhard            02446-4658743
         Max Bernhard            2
         Ernst Müller
         Katja Müller            3545832
                                 3

         Max Bernhard            0172-3985284
         Relation                 Telefon

         Katja Müller
         2                       0882-757485
                                 02446-4658743

         Katja Müller
         1                       0170-8300389
                                 3545832




  Das ist falsch: Relationen sind nicht immer natürlich   




20.06.2002              (c) Joerg Krause 2002                 7
Was ist falsch an relationalen DBMS?

   • Um mit Tabellen zu arbeiten, brauchen Sie
     besondere Dinge:
      – Proprietäre Datenformate
      – Komplexe Software (“RDBMS” = Relational Database
        Management System genannt)
      – Kenntnisse einer speziellen Abfragesprache (SQL =
        structured query language)
   • Aber warum verwendet dann die ganze Welt
     RDBMS?
      – Clevere Speicherformate sind sehr effizient
      – Eine großer Anzahl guter Werkzeuge ist verfügbar
      – Großartige Unterstützung für SQL-Entwickler
  Es ist Zeit, einen Schritt weiter zu gehen…          



20.06.2002             (c) Joerg Krause 2002               8
Daten mit XML speichern

   1. Definieren Sie “Ihre eigene Sprache”
        •    XML ist nur eine Art “Framework”
        •    XML-Definitionen (Schema, DTD) lassen
             Computer “ihre eigene Sprache” ohne Probleme
             lesen
   2. “Lesen” Sie Ihre Daten direkt
        •    Einfach Editor starten und lesen…
   3. “Bearbeiten” ohne Einschränkungen
        •    Lernen Sie XSLT und transformieren Sie die
             Daten – für Menschen, für Computer, für die
             Zukunft
  Weiter: Ein Blick auf echtes XML                          


20.06.2002                 (c) Joerg Krause 2002            9
Daten in XML darstellen
    <?xml version="1.0"?>
    <telefonbuch>
       <eintrag>
        <name>Ernst Müller</name>
        <telefon>3545832</telefon>
      </eintrag>
       <eintrag>
        <name>Max Bernhard</name>
        <telefon>02446-4658743</telefon>
        <telefon>0172-3985284</telefon>
      </eintrag>
       <eintrag>
        <name>Katja Müller</name>
        <telefon>0882-757485</telefon>
        <telefon>0170-8300389</telefon>
      </eintrag>
    </telefonbuch>




    Weiter: näher dran am Objekt                      


20.06.2002                    (c) Joerg Krause 2002   10
Daten in XML darstellen
    <?xml version="1.0"?>
    <telefonbuch>
       <eintrag>
        <name>Ernst Müller</name>
        <telefon typ=“Festnetz“> >3545832</telefon>
      </eintrag>
       <eintrag>
        <name>Max Bernhard</name>
        <telefon typ=“Festnetz“> >02446-4658743</telefon>
        <telefon typ=“Mobil“> >0172-3985284</telefon>
      </eintrag>
       <eintrag>
        <name>Katja Müller</name>
        <telefon typ=“Festnetz“>0882-757485</telefon>
        <telefon typ=“Mobil“>0170-8300389</telefon>
      </eintrag>
    </telefonbuch>




    Weiter: Daten aus XML herausholen                       


20.06.2002                    (c) Joerg Krause 2002             11
Daten aus XML auswählen

   • Noch mehr kryptische Akronyme:
        – XPath = XML Path language
        – XSLT = XSL transformation
   • XPath holt die Knoten aus einem XML-Baum
        –    Die Struktur eines XML-Dokuments ist hierarchisch
        –    Jedes Element wird als Knoten bezeichnet
        –    Der Weg zu einem Knoten ist ein Pfad (Path)
        –    XPath wählt Knoten aus
        –    XPath ersetzt SQL häufig (aber nicht immer)


  Weiter: ein Blick auf XPath                                


20.06.2002                  (c) Joerg Krause 2002                12
XPath wählt Daten für XSLT aus

   • Warum wird XPath bei der Arbeit mit
     XSLT benötigt?
        – XSLT verwendet XPath Anweisungen
        – XSLT sagt “wie” Daten transformiert werden
        – XPath sagt “welche” daten transformiert
          werden
             "//telefonbuch/eintrag/name"



  Weiter: Alles auf einmal                        


20.06.2002              (c) Joerg Krause 2002         13
Punkt 2: XSLT praktisch verwenden XML

   • XML:
        – Einfach zu speichern, bearbeiten, debuggen,
          lesen, behandeln
        – Nutzlos für “normale” Menschen, deshalb sollte es
          in sinnvolle Formate transformiert werden


   • XSLT:
        – Wird verwendet, um XML in lesbare /
          verwendbare Formate zu wandeln


  Zuerst: Ziele definieren                                    


20.06.2002               (c) Joerg Krause 2002                14
Die Ziele der Transformation

   • Menschen lesen Dokumente auf vielen
     Wegen:
        – HTML, wenn es aus dem Web kommt
             • Anderes HTML auf CD-ROM
             • Anderes HTML für eine Set-Top Box
             • Anderes HTML für den Druck aus dem Browser
        – WML für mobile Geräte
        – PDF für den Druck

  Weiter: noch mehr Ziele                               


20.06.2002                (c) Joerg Krause 2002             15
Die Ziele der Transformation

   • Auch Computer benötigen Daten:
        – XML   für   Ihre Lieferanten
        – XML   für   Ihre Kunden
        – XML   für   die Verwaltung
        – XML   für   Geschäftspartner
        – XML   für   die PR-Agentur
        – XML   für   das Controlling…


  Weiter: Wie das praktisch aussieht               


20.06.2002                 (c) Joerg Krause 2002       16
Wie arbeitet XSLT?

   • XSLT definiert Regeln
        – Regeln sind besser als komplexe Logiken
        – Regeln sagen, “was” zu tun ist, nicht “wie”
   • XSLT ist XML
   • XSLT verwendet XPath zur Datenauswahl
   • XSLT ist verrückt: Zuerst werden Sie es
     hassen, aber wenn Sie es verwenden,
     werden Sie es lieben lernen

  Weiter: Ein Blick auf XSLT                            


20.06.2002             (c) Joerg Krause 2002            17
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0“
  XSLT: Unsere erste Transformation
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
       <xsl:template match="/">
        <table border="1">
     •         HTML mit XSLT erzeugen
             <tr>
                 <th>Name</th><th>Telefon</th>

     •         Aufgabe: HTML aus XML generieren
             </tr>
             <xsl:apply-templates select="*"/>
        </table>
     •         Folgende Schritte sind zu tun:
       </xsl:template>
    <xsl:template match="eintrag">
        <tr>
            1. Das XML-Dokument holen
            2. Das XSLT-Dokument beschaffen
             <td><xsl:value-of select="name"/></td>
             <td><xsl:apply-templates select="telefon"/></td>
            3.
        </tr> Programm einrichten (z.B. in ASP)
            4. Den
    </xsl:template> Computer die Arbeit machen lassen
    <xsl:template match="telefon">
            5. Zurücklehnen und freuen
        <xsl:value-of select="."/>
        (<xsl:value-of select="./@typ"/>)
        <br />
    Zuerst: Ein Blick auf XML
    </xsl:template>
</xsl:stylesheet>
                                                                


  20.06.2002              (c) Joerg Krause 2002                     18
XSLT und wie es arbeitet

   • <xsl:template match=“/”>
      – Zugriff auf das Wurzelelement
   • <xsl:apply-template select=“*”/>
      – Alle Regeln auswählen, für alle Knoten
      – Durchläuft alle Knoten des XML-Dokuments
   • <xsl:value-of select=“name”/>
      – Den aktuellen Knoten “name” lesen
   • <xsl:value-of select=“./@typ”/>
        – Den Wert des Attributes “typ” lesen (wenn vorh.)


    Weiter: ASP die Arbeit machen lassen                     


20.06.2002               (c) Joerg Krause 2002               19
ASP die Arbeit machen lassen

   • Universell: MSXML 4.0
   • Leistungsfähiges XML-Werkzeug
   • Parser, Transformer, COM-Modul in einem
    xmlFile = "./" & path & "/telefonbuch.xml"
    xslFile = "./" & path & "/html.xsl"




  Weiter: Die Vorteile erkennen                       


20.06.2002                    (c) Joerg Krause 2002   20
Die Vorteile erkennen

   •         XML für Ihre Homepage:
        1. Ziele definieren:
              – Sichtbares “schönes” HTML
              – Druckbares HTML
        2. Erforderliche Schritte:
              – XML definieren
              – XSLT 2x definieren (2 Ziele sind vorhanden)
              – Ein paar Zeilen ASP-Code schreiben


  Weiter: Worauf es ankommt                                   


20.06.2002                  (c) Joerg Krause 2002             21
Noch mehr Vorteile

   • Was der Benutzer braucht:
        – Wenn er einen Link in HTML sieht, wird er darauf
          klicken wollen
        – Wenn er denselben Link in der Druckversion sieht,
          muss er die gesamte Adresse lesen können, statt eines
          unterstrichenen Wortes
   • Was Sie brauchen:
        – Die Daten werden an nur einem Platz gehalten (XML)
        – Datenspeicherung und Präsentation sind getrennt
          (XSLT)


  Weiter: Ein praktisches Beispiel                         


20.06.2002               (c) Joerg Krause 2002             22
XML für Ihr nächstes Projekt

   • Abstrakte Definition der Daten
   • Beispiel: <link> ist ein geräteunabhängiger Link

       <document>
          <title>Hier steht der Titel</titel>
          <author>Jörg Krause</title>
          <text>Dies ist ein Text, der überall erscheinen soll. Er kann
             auch <link href="http://www.joerg.krause.net" source="1">
             Links</link> enthalten.
             <link href="http://www.dotnet.comzept.de" source="2">Weitere
             Informationen</link> finden Sie bei www.dotnet.comzept.de.
          </text>
        </document>




   Weiter: Mit XSLT spielen                                                 


20.06.2002                     (c) Joerg Krause 2002                            23
Mit XSLT spielen

   • Erster Schritt:
     Das Tag <link> in ein HTML-Tag
     transformieren:
       <a href="http://www.link.to">LinkTo</a>
   • Zweiter Schritt:
     Das Tag <link> in ein druckbares Format
     transformieren:

      [1] LinkTo (http://www.link.to)


   Weiter: XSLT im Dateil                        


20.06.2002             (c) Joerg Krause 2002         24
XSLT: Die Templates erstellen

   1. In ein <a> transformieren
         <xsl:template match="*/link“>
             <a class="link" href="{@href}">
             <xsl:value-of select="."/></a>
        </xsl:template>

   2. Druckbare Version erstellen
        <xsl:template name="linkliste">
             <xsl:for-each select="*/link">
               [<xsl:value-of select="./@source"/>]
                <xsl:value-of select="./text()"/>
                <xsl:value-of select="./@href"/>)</li>
             </xsl:for-each>
        </xsl:template>




   Weiter: Ein Blick auf die Ergebnisse                  


20.06.2002                     (c) Joerg Krause 2002     25
XSLT: für die perfekte Homepage

   • XSLT ist der beste Weg, Ihre Bedürfnisse und
     die der Nutzer gleichermaßen gut zu erfüllen




   Weiter: Noch mehr Ziele                      


20.06.2002          (c) Joerg Krause 2002           26
Andere Ziele als HTML/XML

   • Was Nutzer im wirklichen Leben
     erwarten:
        – Rich Media HTML im Büro
        – Kleinere Seiten zu Hause
        – Druckbare Versionen bestimmter Seiten
        – Dokumente als PDF herunterladen
   • So sieht die perfekte Website aus, aber
     wie kann man sie erstellen?
   Weiter: Der harte Weg ::= XSL:FO               


20.06.2002            (c) Joerg Krause 2002       27
XSL:FO - Formatting Objects

   • XSL:FO eine richtige
     Formatierungssprache
        – Für Designer
        – Gut genug für professionellen Druck
   • FO ist ein sehr junger Standard
        – Es gibt nur wenige Parser
        – Eine Probleme in der Praxis
        – Viel Aufwand nötig, um es zu lernen


   Weiter: Wie es aussieht                      


20.06.2002             (c) Joerg Krause 2002        28
Wie sieht FO aus?

   • FO ist ein XML-Dialekt:
        <?xml version="1.0">
          <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
            <fo:layout-master-set>
              <fo:simple-page-master master-name="first"
                                     page-height="11in"
                                     page-width="8.5in"
                                     margin-top="1in"
                                     margin-bottom=".75in"
                                     margin-left="1in" />
            </fo:layout-master-set>
            <fo:page-sequence master-name="first">
               <fo:static-content flow-name="xsl-region-before">
                  Dieser Text erscheint auf jeder Seite
               </fo:static-content>
            </fo:page-sequence>
          </fo:root>


   Weiter: Programmieren in XML?                                   


20.06.2002                     (c) Joerg Krause 2002               29
Punkt 3: Programmierung in XML

   • In der konventionellen Programmierung
     wird eine komplexe Logik als Folge von
     Anweisungen geschrieben
   • Nur ein paar Anweisungen dienen der
     Definition der Logik, aber viele werden
     zum Ablauf benötigt.
   • Aber Logik basiert meist auf Regeln…


   Weiter: Die Bedeutung von Regeln        


20.06.2002         (c) Joerg Krause 2002       30
Auf Regeln basierte Programmierung

   • Vergessen Sie alles über konventionelle
     Programmierung (nicht wirklich, wir blicken
     hier nur mal kurz in die Zukunft)
   • Programme arbeiten meist mit Daten und
     häufig transformieren sie Daten, basierend
     auf Regeln (auch “Geschäftslogik” genannt)
   • Und wenn wir “transformieren” hören, sollten
     wir an XSLT denken


   Weiter: Die Paradigmen vergleichen               


20.06.2002           (c) Joerg Krause 2002              31
Die Paradigmen vergleichen

   • Definieren Sie nicht mehr die gesamte
     Logik in einer konventionellen Sprache.
     Wir haben alternative Wege:
        – Definieren Sie Daten in XML
        – Definieren Sie die Geschäftslogik in XML
        – Definieren Sie die Ausgabeumwandlung in
          XSLT
   • Neue Technologien für alte Aufgaben:
        – XPath, XDR, XQuery, XForms
   Weiter: Die Vorteile verstehen                    


20.06.2002             (c) Joerg Krause 2002             32
Die Vorteile verstehen

   • Die Logik steckt in einfach lesbaren, einfach
     wartenden, leicht verständlichen XML-Dateien
   • Die Aufgabe der Verarbeitung erledigt ein
     robuster, kommerzieller Parser:
        – Diese Parser (z.B. MSXML) sind extrem stabil,
          haben eine bessere Performance und sind
          zuverlässiger als ein komplexes Programm jemals
          sein kann
        – Ihre Arbeit basiert auf offenen Standards, sodass
          der Parser leicht getauscht werden kann

   Weiter: Computer machen die Arbeit…                        


20.06.2002                (c) Joerg Krause 2002                   33
Computer machen die Arbeit

   • Heute arbeiten Computer für Sie, indem sie
     die Definitionen eines prozeduralen
     Programms abarbeiten
   • Morgen werden Computer verstehen, was Sie
     möchten und die Regeln anwenden, die Sie
     definiert haben
   • Mit XML können Computer verstehen, um
     was es gerade geht
   • Mit XSLT werden sie Regeln anwenden

   Weiter: Der nächste Schritt                    



20.06.2002          (c) Joerg Krause 2002             34
Der nächste Schritt

   • Werfen Sie ein Blick auf die Applikation der
     Zukunft:
        –    Ihre Daten sind in XML gespeichert
        –    Ihre GUI wird mit Xforms definiert
        –    Die Geschäftslogik ist in einem andern XML
        –    Regeln und Aufgaben stecken in XSLT
        –    Alles am Programm ist einfacher Text, lesbar,
             prüfbar, kompakt
   • Die eigentliche Arbeit erledigt ausgereifte
     Software: XML und XSLT Parser

   Weiter: XML und XSLT sind die Zukunft                     


20.06.2002                   (c) Joerg Krause 2002               35
XML und XSLT sind die Zukunft

   •   Billigere Softwareentwicklung
   •   Höhere Softwarequalität
   •   Anbieterunabhängigkeit
   •   Basierend auf offenen Standard
   •   Leicht zu erweitern
   •   Bessere Teamarbeit
   •   Keine Probleme mit der Skalierung
   Noch ein Wort zu mir                     


20.06.2002          (c) Joerg Krause 2002       36
Über mich und meine Projekte

  Info:      www.joerg.krause.net
  “Briefkasten”: joerg@krause.net

       – www.sharptemple.de
             Die Webserverprogrammierung für jedermann
       – www.dotnet.comzept.de
             ASP/ASP.NET-Bücher für jedermann


                                                         


20.06.2002                 (c) Joerg Krause 2002         37
             Fragen?




20.06.2002    (c) Joerg Krause 2002   38

								
To top