XML, DTDXSD, XSLT und XPath - Ein Überblick

Document Sample
XML, DTDXSD, XSLT und XPath - Ein Überblick Powered By Docstoc
					Geschichte der XML       XML        XSLT         Zusammenfassung   Quellen




                     XML, DTD/XSD, XSLT und XPath
                                    ¨
                                Ein Uberblick


                               Martin Wegner


                               5. Februar 2008
Geschichte der XML      XML     XSLT   Zusammenfassung   Quellen



Inhalt

      1    Geschichte der XML
Geschichte der XML      XML     XSLT   Zusammenfassung   Quellen



Inhalt

      1    Geschichte der XML
      2    XML
            Beispiel-Dokument
            Schema
            XML-Dialekte
Geschichte der XML        XML   XSLT   Zusammenfassung   Quellen



Inhalt

      1    Geschichte der XML
      2    XML
            Beispiel-Dokument
            Schema
            XML-Dialekte
      3    XSLT
             Beschreibung
             XPath
             XSLT-Elemente
             Beispiel
             Praxis-Beispiele
Geschichte der XML        XML   XSLT   Zusammenfassung   Quellen



Inhalt

      1    Geschichte der XML
      2    XML
            Beispiel-Dokument
            Schema
            XML-Dialekte
      3    XSLT
             Beschreibung
             XPath
             XSLT-Elemente
             Beispiel
             Praxis-Beispiele
      4    Zusammenfassung
Geschichte der XML        XML           XSLT        Zusammenfassung   Quellen



Entstehung I




      Idee
           u
      Ankn¨pfend an Erfolg von HTML:
             Klartext (,,human readable”) ⇒ einfache Verbreitung
             Daten hierarchisch strukturieren
             Universeller als HTML
Geschichte der XML            XML          XSLT         Zusammenfassung      Quellen



Entstehung II




                                            u
                     1994 Tim Berners-Lee gr¨ndet Entwicklerforum am MIT
                       ⇒ HTML reicht nicht mehr aus
                       ⇒ Neue Auszeichnungssprachen zum
                         Informationsaustausch
                       ⇒ Ziel: Definitionssprache f¨r Auszeichnungssprachen
                                                  u
                        – XML entsteht auf Basis von SGML
Geschichte der XML           XML           XSLT        Zusammenfassung   Quellen



Unterschied XML ↔ SGML



      SGML
      Standard Generalized Markup Language

              u
             W¨rde ausreichen
             Aber ,,zu wissenschaftlich”
                                    a
             XML ubernimmt nur popul¨re Elemente der SGML
                   ¨
              u
             G¨ltigkeit
                     SGML braucht immer eine DTD
                     XML reicht sog. Wohlgeformtheit
Geschichte der XML            XML         XSLT        Zusammenfassung      Quellen



Entstehung III




                     1996 SGML 96 Conference, Boston: Erster XML-Entwurf
                     1998 Erste Recommendation des W3C
                          ¨
                        ↓ Uberf¨hrung bekannter Sprachen wie HTML, SVG
                                u
                          und MathML in XML-Dialekte
Geschichte der XML       XML           XSLT          Zusammenfassung   Quellen



Beispiel-Dokument


      <? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
      <q u i z>
        <f r a g e>
             Wofuer s t e h t d i e Abkuerzung W3C?
        </ f r a g e>
        <a n t w o r t k o r r e k t=” j a ”>
             World Wide Web C o n s o r t i u m
        </ a n t w o r t>
        <a n t w o r t k o r r e k t=” n e i n ”>
                         −R
             E i n e n WC e i n i g e r
        </ a n t w o r t>
      </ q u i z>
Geschichte der XML     XML          XSLT          Zusammenfassung   Quellen



Schema




                         o
      Ein Schema wird ben¨tigt, um die Struktur einer
      Auszeichnungssprache in XML zu definieren.
      Bekannte Schema-Sprachen sind:
             DTD
             XSD
      Außerdem gibt es die Wohlgeformtheit.
Geschichte der XML        XML           XSLT         Zusammenfassung   Quellen



Wohlgeformtheit


      Kriterien:
             Genau ein Wurzelelement.
             Alle Elemente mit Inhalt besitzen Start- und End-Tag.
                                   o
             Inhaltslose Elemente k¨nnen in sich geschlossen sein.
             Start- und End-Tags ebenentreu-paarig verschachtelt.
             Pro Element nur ein Attribut mit dem gleichen Namen.
             Etc.
      XML-Parser . . .
             u
      . . . d¨rfen nur wohlgeformte XML-Dokumente verarbeiten. Sie
        u
      d¨rfen keinerlei Korrekturen vornehmen.
Geschichte der XML       XML           XSLT          Zusammenfassung   Quellen



Wohlgeformtheit: Ein Beispiel


      <? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
      <q u i z>
        <f r a g e>
             Wofuer s t e h t d i e Abkuerzung W3C?
        </ f r a g e>
        <a n t w o r t k o r r e k t=” j a ”>
             World Wide Web C o n s o r t i u m
        </ a n t w o r t>
        <a n t w o r t k o r r e k t=” n e i n ”>
                         −R
             E i n e n WC e i n i g e r
        </ a n t w o r t>
      </ q u i z>
Geschichte der XML       XML          XSLT         Zusammenfassung    Quellen



DTD




      Zusammen mit XML spezifiziert. Definiert Elemente, Attribute und
           a
      Entit¨ten.
      Nachteile:
                             a
             Fehlende Namensr¨ume
             Eigene Sprache
             Keine Typen, um z. B. Text und Zahlen zu unterscheiden
Geschichte der XML       XML            XSLT           Zusammenfassung       Quellen



DTD: Ein Beispiel



      <!ELEMENT page ( b a n n e r ? , n a v i g a t i o n ? , t i t l e ,
          date , c o n t e n t )>
      <!ELEMENT b a n n e r EMPTY  >
      <!ELEMENT c o n t e n t ( news ∗ | message ∗ )>
      <!ELEMENT news (#PCDATA)>
      <!ATTLIST news
        d a t e CDATA #REQUIRED
        a u t h o r CDATA #IMPLIED
      >
      <!ENTITY name ”Tim B e r n e r s −Lee”>
Geschichte der XML       XML          XSLT         Zusammenfassung     Quellen



XSD




      XML-Schema-Definition.
                    u
      Vorteile gegen¨ber DTD:
             Selbst in XML definiert
                                                          a
             Erlaubt komplexere Definitionen, z. B. Einschr¨nkung von
             Datentypen
Geschichte der XML           XML               XSLT             Zusammenfassung               Quellen



XSD: Ein Beispiel I



      <x s d : s i m p l e T y p e name=” MessageIDType ”>
        <x s d : a n n o t a t i o n>
            <x s d : d o c u m e n t a t i o n> . . . </ x s d : d o c u m e n t a t i o n>
        </ x s d : a n n o t a t i o n>
        < x s d : r e s t r i c t i o n b a s e=” x s d : s t r i n g ”>
            <x s d : p a t t e r n
                     v a l u e=” [ a−zA−Z0−9@ \ . \ − ] { 1 , 2 5 6 } ” />
        </ x s d : r e s t r i c t i o n>
      </ x s d : s i m p l e T y p e>
Geschichte der XML           XML               XSLT             Zusammenfassung               Quellen



XSD: Ein Beispiel II




      <x s d : e l e m e n t name=” c hat −message ”
           t y p e=” ChatMessage ” />
      <x s d : c o m p l e x T y p e name=” ChatMessage ”>
        <x s d : a n n o t a t i o n>
            <x s d : d o c u m e n t a t i o n> . . . </ x s d : d o c u m e n t a t i o n>
        </ x s d : a n n o t a t i o n>
         ...
Geschichte der XML      XML           XSLT           Zusammenfassung   Quellen



XSD: Ein Beispiel III


         ...
        <x s d : s e q u e n c e>
            < x s d : c h o i c e>
                 <x s d : e l e m e n t name=” h e l l o ”
                       t y p e=” H e l l o M e s s a g e ” />
                 <x s d : e l e m e n t name=” ack ”
                       t y p e=” AckMessage ” />
            </ x s d : c h o i c e>
        </ x s d : s e q u e n c e>
        < x s d : a t t r i b u t e name=” t t l ” t y p e=”TTLType”
               d e f a u l t=”1” />
      </ x s d : c o m p l e x T y p e>
Geschichte der XML   XML         XSLT         Zusammenfassung   Quellen



XML-Dialekte




                           Einige Beispiele
Geschichte der XML   XML    XSLT   Zusammenfassung   Quellen



XML-Dialekt: XHTML




                           XHTML
Geschichte der XML                XML                  XSLT                  Zusammenfassung                     Quellen



XML-Dialekt: SVG

      Scalable Vector Graphics.

      <? xml version = " 1.0 " encoding = " UTF -8 " ? >
      <! DOCTYPE svg PUBLIC " -// W3C // DTD SVG 1.1// EN "
             " http: // www . w3 . org / Graphics / SVG /1.1/ DTD / svg11 . dtd " >
      < svg xmlns = " http: // www . w3 . org /2000/ svg " width = " 1000 " height = " 600 " viewBox = " 0 0 5
               5">
         < rect id = " black_stripe " fill = " #000 " width = " 5 " height = " 1 " / >
         < rect id = " gray_i " fill = " #444 " width = " 5 " height = " 1 " y = " 1 " / >
         < rect id = " gray_ii " fill = " #888 " width = " 5 " height = " 1 " y = " 2 " / >
         < rect id = " gray_iii " fill = " # ccc " width = " 5 " height = " 1 " y = " 3 " / >
         < rect id = " white " fill = " # fff " width = " 5 " height = " 1 " y = " 4 " / >
      </ svg >
Geschichte der XML                  XML                   XSLT          Zusammenfassung   Quellen



XML-Dialekt: MathML
   < math
           xmlns = " http: // www . w3 . org /1998/ Math / MathML " >
      < mi >x </ mi >
      < mo >= </ mo >
      < mfrac >
         < mrow >
            < mrow >
               < mo > - </ mo >
               < mi >b </ mi >
            </ mrow >
            < mo >& PlusMinus ; </ mo >
            < msqrt >
               < msup >
                  < mi >b </ mi >
                  < mn >2 </ mn >
               </ msup >
               < mo > - </ mo >
               < mrow >
                  < mn >4 </ mn >
                  < mo >& InvisibleTimes ; </ mo >
                  < mi >a </ mi >
                  < mo >& InvisibleTimes ; </ mo >
                  < mi >c </ mi >
               </ mrow >
            </ msqrt >
            ...
         </ mrow >
      </ mfrac >
   </ math >
Geschichte der XML         XML         XSLT        Zusammenfassung        Quellen



XSLT I



      Extensible Stylesheet Language Transformations
      . . . wird benutzt, um XML-Dialekte in andere Formate (meist auch
      wieder XML-basiert) zu ubersetzen.
                               ¨

             Baut auf Baumstruktur eines XML-Dokuments auf.
             Definiert Umwandlungsregeln.
                              a
             Ist turing-vollst¨ndig.
                               u
             XSLT-Prozessoren f¨hren die Transformation durch.
Geschichte der XML            XML           XSLT           Zusammenfassung          Quellen



XSLT II




             Quellbaum wird in einen Zielbaum ubersetzt.
                                               ¨
             Eine Transformation gibt eine Reihe von Templates an.
                                                   u
                     Besitzt ein Pattern (XPath), f¨r welchen Teil des Quellbaums
                     es gilt.
                     Inhalt bestimmt resultierenden Teil des Zielbaums.
Geschichte der XML            XML            XSLT            Zusammenfassung         Quellen



XPath



      XPath . . .
      . . . ist eine Abfragesprache, die Teile eines XML-Dokumentes
      adressieren kann.
      Ein XPath-Ausdruck besteht dabei aus:
        1 Lokalisierungsschritten. Bestehend aus:

                     Knoten
                     Sog. Achsen, d. h. Knotenbeziehungen wie parent, child, . . .
         2               a
             Optional: Pr¨dikaten
                     Relationen: =, !=, >=, and, or, . . .
                     Operatoren: substring(), count(), position(), . . .
Geschichte der XML       XML        XSLT        Zusammenfassung   Quellen



Beispiele



              Wurzel /
      Knoten (Inhalt) /root/child1/child2/node
      Knoten (relativ) .././parent/otherchild
           Attribute ./@attrName0
           Selektion
                         eintrag[3]
                         eintrag[last() - 1]
                         augen[@farbe = ’blau’]
Geschichte der XML    XML          XSLT        Zusammenfassung    Quellen



XSLT-Elemente I




                             u
      xsl:template Template f¨r Ergebnisbaum definieren
      xsl:output Erzeugen des Ergebnisbaums kontrollieren
      xsl:choose Aus mehreren Alternativen mittels xsl:when und
                                  a
                 xsl:otherwise w¨hlen
                    u
      xsl:for-each F¨r eine Menge an Knoten wiederholen
Geschichte der XML        XML         XSLT       Zusammenfassung      Quellen



XSLT-Elemente II



      xsl:element Element im Ergebnisbaum erzeugen
      xsl:attribute Attribut im Ergebnisbaum erzeugen
              xsl:if Bedingter Abschnitt
      xsl:value-of Einen Wert, z. B. Inhalt eines Knotens, ausgeben
      xsl:call-template mit
      xsl:with-param und
        xsl:param Ein Template explizit mit Parametern aufrufen
Geschichte der XML       XML           XSLT          Zusammenfassung   Quellen



Beispiel-Dokument


      <? xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8” ?>
      <q u i z>
        <f r a g e>
             Wofuer s t e h t d i e Abkuerzung W3C?
        </ f r a g e>
        <a n t w o r t k o r r e k t=” j a ”>
             World Wide Web C o n s o r t i u m
        </ a n t w o r t>
        <a n t w o r t k o r r e k t=” n e i n ”>
                         −R
             E i n e n WC e i n i g e r
        </ a n t w o r t>
      </ q u i z>
Geschichte der XML                    XML                      XSLT                      Zusammenfassung                         Quellen



Beispiel-Transformation

      <? xml version = " 1.0 " encoding = " utf-8 " ? >
      < xs l: sty lesheet version = " 1.0 " xmlns:xsl = " http: // www . w3 . org /1999/ XSL / Transform " >
         < xsl:output method = " xml " indent = " no " encoding = " utf-8 "
                doctype-public = " -// W3C // DTD XHTML 1.0 Transitional // EN "
                doctype-system = " http: // www . w3 . org / TR / xhtml1 / DTD / x h t m l 1 - t r a n s i t i o n a l . dtd "
                />

         ...
         < xsl:template match = " / quiz " >
            < h1 > < xsl:value-of select = " ./ frage " / > </ h1 >
            < ul >
               < xsl:for-each select = " ./ antwort " >
                   < li >
                      < xsl:choose >
                          < xsl:when test = " ./ @korrekt = ’ja ’ " >
                             < xsl:attribute name = " style " > color: #006400; </ xsl:attribute >
                          </ xsl:when >
                          < xsl:otherwise >
                             < xsl:attribute name = " style " > color: # FF0000 ; </ xsl:attribute >
                          </ xsl:otherwise >
                      </ xsl:choose >
                      < xsl:value-of select = " . " / >
                   </ li >
               </ xsl:for-each >
            </ ul >
         </ xsl:template >
         ...
      </ xsl :st ylesheet >
Geschichte der XML     XML          XSLT          Zusammenfassung   Quellen



Praxis-Beispiel I
                                    a
      Tabelle mit abwechselnd einzuf¨rbenden Zeilen. Annahme:
      <tabelle> und <reihe>’n.

      < xsl:template match = " ./ tabelle " >
         < table >
            < xsl:for-each select = " ./ reihe " >
               < tr >
                  < xsl:if test = " position () mod 2 = 1 " >
                      < xsl:attribute
                          name = " style " > ba ckgrou nd-col or:
                          # eee ; </ xsl:attribute >
                  </ xsl:if >
                  ...
               </ tr >
            </ xsl:for-each >
         </ table >
      </ xsl:template >
Geschichte der XML    XML         XSLT         Zusammenfassung   Quellen



Praxis-Beispiel II


      Komma-separierte Liste von Namen. Annahme: <liste> und
      <name>’n

      < xsl:template match = " ./ liste " >
         < xsl:for-each select = " ./ reihe " >
            < xsl:value-of select = " . " / >
            < xsl:if test = " position () != last () " >
              < xsl:text > , </ xsl:text >
            </ xsl:if >
         </ xsl:for-each >
      </ xsl:template >
Geschichte der XML   XML   XSLT   Zusammenfassung   Quellen


                 ¨
Zusammenfassende Ubersicht
Geschichte der XML       XML          XSLT          Zusammenfassung   Quellen



Quellen




             http://www.w3.org/XML/
             http://de.selfhtml.org/xml/index.htm
             http://de.wikipedia.org/wiki/XML

				
DOCUMENT INFO
Shared By:
Stats:
views:42
posted:2/1/2010
language:German
pages:35