Extensible Markup Language (XML)


Einleitung

Von SGML zu XML

HTML Beschränkungen

HTML Beispiel (1)

<HTML>
<HEAD>
<TITLE>Beispiel
       </TITLE>
</HEAD>
<BODY>
<H1>Überschrift</H1>
<P>Ein Paragraph 
mit Text ...</P>
</BODY>
</HTML>

HTML Beispiel (2)

<UL>
<LI>Eine ungeordnete 
<LI>Liste 
<LI>it verschiedenen 
<LI>Punkten
</UL>

Komplexität von SGML

SGML Beispiel (1)

<!ELEMENT COMPANY - - (NAME?,PRODUCT?) >
<!ELEMENT NAME - O (#PCDATA)>
<!ELEMENT PRODUCT - - (ITEM*)>
<!ELEMENT ITEM - O (#PCDATA)>
<!ENTITY ... >
<!ATTLIST COMPANY
  type (non-profit | limited | corp) >

SGML Beispiel (2)

<COMPANY type=corp >
<NAME>All you want
<PRODUCT>
<ITEM>Apartments
<ITEM>Automobiles
<ITEM>...
</PRODUCT>
</COMPANY>

Ansatz von XML

XML-Animation

XML im Beispiel

<p secret="false">This sentence is in the content of an
element whose type is "p"; the content is found between the
start-tag and the end-tag. The paragraph has an attribute named "secret"
whose value is "false". <IMG SRC="icon.jpg"/> is an
empty element, distinguished by the fact that it ends with "/>".</p>
<!doctype book SYSTEM "book.dtd"
[<!entity toc SYSTEM "toc.xml">
 <!entity chap1 SYSTEM "d/c1.xml">
]>
<book>
<head>&toc;</head>
<body>
&chap1; &chap2;
</body></book>
<!doctype eg 
[<!entity xml 
 "Extensible Markup Language">
]>
<eg>The new &xml; standard is fully internationalized; the following
are all examples of the digit "1": &#49; (in ASCII),
&#x0661; (in Devanagari), &#x0967; (in Arabic), and
&#x0d67; (in Malayalam).</eg>

XML "Helfer"


XML Sprachkonstrukte

Unterschiede zu HTML

XML Dokument

Dokumentbeschreibung

Inhaltsbeschreibung, Content Model Spec

Attributbeschreibung

 

Beispiel

Beschreibung des Dokumententyps

<?xml encoding="US-ASCII"?>

<!ELEMENT personals (person)+>
<!ELEMENT person (name,email*,url*,link?)>
<!ATTLIST person id ID #REQUIRED>
<!ELEMENT family (#PCDATA)>
<!ELEMENT given (#PCDATA)>
<!ELEMENT name (#PCDATA|family|given)*>
<!ELEMENT email (#PCDATA)>
<!ELEMENT url EMPTY>
<!ATTLIST url href CDATA #REQUIRED>
<!ELEMENT link EMPTY>
<!ATTLIST link
  manager IDREF #IMPLIED
  subordinates IDREFS #IMPLIED>

XML Dokument entsprechend dieser DTD

<?xml version="1.0"?>
<!DOCTYPE personals SYSTEM "personal.dtd">

<personals>
  ...
  <person id="K.TAMURA">
    <name>
      <family>TAMURA</family> 
      <given>Kent</given>
    </name>
    <!-- This URL is mail address.-->
    <url href="mailto:kent@trl.ibm.co.jp"/>
    <url href="mailto:tkent@jp.ibm.com"/>
    <link manager="H.MARUYAMA"/>
  </person>

</personals>

XML Helfer

Namensräume

Panda-Bär

Erleichtert die Verwendung verschiedener DTDs im gleichen Dokument.

 

XLink

Schmetterling

Am Anfang XLL, jetzt aufgeteilt in XLink und XPointer. Stand Dezember 1999.

Verweise zwischen mehreren 'Resourcen'. Metadaten für Verweise. Eignung für Link-Datenbanken.

Verhaltensattribute von Links

Gültige Kombinationen von Attributen

simple extended locator arc resource title
type X X X X X X
href X X
role X X X X
title X X X X
show X X X
actuate X X X
from X
to X
Quelle W3C, 1999

Beispiel

<X xlink:type="extended" >
<L xlink:type="locator"
   ROLE="TR" TITLE="Übersetzung" 
   SHOW="NEW" HREF="/cgi-bin/xlate?term=Verweis" />
<L xlink:type="locator"
   ROLE="Kontext" TITLE="Links im Kontext" 
   SHOW="REPLACE" HREF="link-spec.html#verweis" />
<L xlink:type="locator"
   ROLE="Bild" TITLE="Links in Bildern" 
   SHOW="EMBED" HREF="bild.gif" />
<L xlink:type="locator"
   ROLE="Tutorium" TITLE="Link Tutorium" 
   SHOW="NEW" HREF="xml-tut.html#ID(def-link)..DITTO,NEXT(3,P)" />
Verweise
</X>

mit der DTD

<!ELEMENT X (#PCDATA|L)* >
<!ELEMENT L EMPTY >

<!ATTLIST X xlink:type CDATA #FIXED "extended" >
<!ATTLIST L xlink:type CDATA #FIXED "locator" >

erzeugt (abhängig vom UA) u.U. folgendes Menue

- Übersetztung
- Links im Kontext
- Links in Bildern
- Link Tutorium

Beispiel für HTML Anchors

<!ELEMENT A (#PCDATA) >
<!ATTLIST A xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" >
<!ATTLIST A xlink:type    "simple" >
<!ATTLIST A xlink:href    CDATA  #REQUIRED >
<!ATTLIST A xlink:show    "replace" >
<!ATTLIST A xlink:actuate "onRequest" >

Noch starke Veränderungen in den Working Drafts des W3C.


XPath

Tiger

 
 

Verweise auf Teile/Parts von XML Dokumenten (als Baum von Knoten betrachtet). Identifikation von Parts durch Vergleich von Zeichenketten.

Wird in XSLT und XPointer zur Spezifikation von Fragmenten verwendet. Diese definieren auch den Kontext in dem die XPath Ausdrücke ausgewertet werden.

Aufbau eines Pfadbestandteils

achse::knotentest[prädikat]

Beispiel

child::para[position()=7]

http:://host/pfad/resource#xpointer(child::para[position()=7])

Komposition von Pfaden durch Pfadbestandteile, die durch / getrennt werden.

Achsen

ancestor, descendant, following, preceding und self Partitionieren die Menge aller Knoten eines Dokuments.

Knoten-Tests

Beispiel: alle para Element-Knoten

child::para

Beispiel: das href Attribut des Knotens

attribute::href

Beispiel: alle Textknoten

child::text()

Prädikate

Beispiel: der 7. Knoten

[ position() = 7 ]

Funktionen

Abkürzungen

Zur Vereinfachung gibt es eine ganze Reihe von kompakteren Bezeichungen der Pfadbestandteile.


XPointer

Adler

 
 

Verweise auf Teile/Fragmente von XML Dokumenten. Fragmente sind einzelne Punkte/Objekte/Knoten und zusammenhängende Bereiche von Punkten. Identifikation von Fragmenten durch Vergleich von Zeichenketten.

Steht in enger Beziehung zu DOM. Baut auf XPath auf. Wird zusammen mit XLink zur Definition von XML Links benötigt.

URL Aufbau mit XPointer
service:://host/pfad/resource#xpointer-expr
service:://host/pfad/resource|xpointer-expr

dabei ist xpointer-expr:
html-name
oder xpointer( xpath-expr )
oder xpointer( xpath-expr to xpath-expr )

Beispiele

#intro

#xpointer(id("intro"))

#xpointer(//*[@id="intro"])

Erweiterungen gegenüber XPath

neue Typen point (ein Knoten oder ein Zeichen einer Zeichenkette) und range ( begin-expr to end-expr ) und einige dazu gehörige Funktionen, z.B. point() und range(...).

Beispiele

xpointer(
    id("sec2.1")/descendant::P[last()] to 
    id("sec2.2")/descendant::P[first()]
)

 


XSL Style Sheets

Wolf

 
 

Am Anfang XSL, jetzt aufgeteilt in XSL Transformations (XSLT) und XSL Formating (FO).

Überblick

Beispiele

CSS:
EM { font-family: roman }
XSLT to HTML:
<xsl:template match="em">
  <I>
  <xsl:apply-templates/>
  </I>
</xsl:template>
(XSLT to CSS: )
<xsl:template match="em">
  <css:chunk font-family="roman">
  <xsl:apply-templates/>
  </css:chunk>
</xsl:template>
CSS mit XML:
<?xml-stylesheet href="url" type="text/css" 
  media="screen" ... ?>
XSLT to LaTeX:
<xsl:template match="em">
  <xsl:text>{\em </xsl:text>
  <xsl:apply-templates/>
  <xsl:text>}</xsl:text>
</xsl:template>

Beispiel eines XML Dokuments

Konversion nach HTML und LaTeX mit Xalan/Xerces

 

XSLT Struktur

Aus Knoten (nodes) eines Dokuments werden Ergebnisknoten gebildet.

Knoten sind: Elemente, Attribute, etc.

Patterns, Muster in match und select

 

Erzeugen von Knoten in Templates

 

Verarbeitung in Templates

 

XSL Formatting Objects

Zunächst für Online und Druck-Dokumente.

Spezifikation der grundlegenden Elemente, ohne die Details einer Implementierung festzulegen.

Formatierung durch areas (wie box in CSS) und spaces (Zwischenräume).

elementare Objekte:

Attribute angelehnt an CSS

 

Stand und Ausblick

XML Tools

XML Anwendungen

in Wissenschaft und EDV

im E-Commerce und Finanzwirtschaft

XML Schema

Drachen

Stand der Entwicklung

6. Januar 2000


© Universität Mannheim, Rechenzentrum, 1998-2000.

Heinz Kredel
Last modified: Tue Feb 8 14:52:00 MET 2000