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

Dokument: .xml

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

<personals>

  <person id="H.MARUYAMA" >
    <name><family>MARUYAMA</family> <given>Hiroshi</given></name>
    <email>maruyama@jp.ibm.com</email>
    <link subordinates="  N.URAMOTO    K.TAMURA "/>
  </person>

  <person id="N.URAMOTO">
    <name><family>URAMOTO</family> <given>Naohiko</given></name>
    <email>uramoto@jp.ibm.com</email>
    <link manager="		H.MARUYAMA"/>
  </person>

  <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>

Description / Definition: .dtd

<?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 "Helfer"

XML Zoo

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>

Validierung

Überprüfung ob der Inhalt eines XML Dokumentes einer gegebenen DTD entspricht.

Die Java Klassen zur Verarbeitung von XML-Daten gehören ab J2SDK 1.4 standartmässig zum Lieferumfang. Bis zum J2SDK 1.3 muss einzusätzliches Softwarepaket installiert werden.

Zur Überprüfung benutzen wir Shell-Scripte.

JDK 1.4 und die xercesSamples.jar von xml.apache.org

valid (JDK 1.4 Version):

#!/bin/sh
VALIDPATH="/home/.../java/lib/xercesSamples.jar"
export CLASSPATH="$VALIDPATH:$CLASSPATH"
/usr/java/j2sdk1.4.1_01/bin/java sax.Counter -p org.apache.crimson.parser.XMLReaderImpl -v $* 

valid.bat (JDK 1.4 Version):

set VALIDPATH=u:\xerces\xercesSamples.jar
set CLASSPATH=%VALIDPATH%;%CLASSPATH%
java sax.Counter -p org.apache.crimson.parser.XMLReaderImpl -v %1

Hilfe:

usage: java sax.Counter (options) uri ...

options:
  -p name     Select parser by name.
  -x number   Select number of repetitions.
  -n  | -N    Turn on/off namespace processing.
  -np | -NP   Turn on/off namespace prefixes.
              NOTE: Requires use of -n.
  -v  | -V    Turn on/off validation.
  -s  | -S    Turn on/off Schema validation support.
              NOTE: Not supported by all parsers.
  -f  | -F    Turn on/off Schema full checking.
              NOTE: Requires use of -s and not supported by all parsers.
  -dv | -DV   Turn on/off dynamic validation.
              NOTE: Requires use of -v and not supported by all parsers.
  -m  | -M    Turn on/off memory usage report
  -t  | -T    Turn on/off "tagginess" report.
  --rem text  Output user defined comment before next parse.
  -h          This help screen.

Verwendung:

valid datei.xhtml

Alternativ können Sie die Klasse Counter.java selbst kompilieren und wie gewohnt benutzen:

java Counter -v datei.xhtml

XML Anwendungen

in Wissenschaft und EDV

im E-Commerce und Finanzwirtschaft


Stand und Ausblick

XML Tools

Stand der Entwicklung

26. April 2004


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

Heinz Kredel

Last modified: Sat Apr 9 11:51:28 CEST 2005