Amm02: Dirk Ammelburger. XML mit Java in 21 Tagen

Markt+Technik. 2002. Konvertiert von n
XML Einführung, mit Beispielen und CD. Sehr wortreich und Konzeptarm.

Basics

  • Case sensitive
  • Jeder tag muss einen Abschluss tag haben <x> .... </x> (bzw <x/>)
  • tags alphnum plus underscore
  • Element tag, endTag und Inhalt
  • Attribute name=“jkl“ (oder apos) im BeginTag
  • Genau ein RootEle pro Docu
  • PI Processing Instruction z.B. <?xml version=“1.0“?>, ?xml gehen an parser
  • Header: pi <?xml mit version, encoding, standalone
  • <!—Kommentar .... -->
  • wellFormed: tags mit EndTags, richtig geschachtelt, Daten nur innerhalb von Eles
  • PCDATA = Parsed Character Data
  • CDATA = Character Data
  • Entities für Spezialzeichen: &lt; <, &gt; >, &quot; “ &apos ’, &amp; & f
  • ie stellt xml it XSL relativ schön als Baum dar

Namensräume

  • <x:a xmlns=“a/b/x“ xmlns:y=“a/b/y“ .... definiert Namensraum x: und y: der auch in allen Untergeordneten Eles sichtbar ist. Default Namensraum ist leer(ohne :) . Gilt aber nicht für Attribute ?!

DTD

Ist selbst nicht xml!
<!DOCTYPE typName
[
<!ELEMENT name (ANY)>
<!ATTLIST name
      name typ modif
      ...
>
<!ELEMENT ...
]> 
  • Der Type des Elements kann ANY, #PCDATA, EMPTY oder name (für definiertes Ele) sein.
  • Kombinatoren: , sequence, | exklusiv or, & und (beliebige Reihenfolge deprecated), Gruppierung mit Klammern und Suffix + (1 oder mehr) ? (0 oder 1), * (0 oder mehr)
  • Der Typ eines Attributes kann CDATA, Enummeration (ja|nein|vielleicht) , ID (eindeutig identif), IDREF oder ENTITY sein. Erlaubt sind auch die Plural und Modifikatoren #IMPLIED, #REQUIRED, #FIXED “wert“. Der Defaultwert wird einfach nachgestellt geQuoted
Entities neben festen (&lt; usw) auch Variable (nur innerhalb doctype?)
 <!ENTITY e1 “wert der Entity“>  Definition
 &e1;                            Beutzung(auch verschachtelt)
  • <!ENTITY fi SYSTEM “titel“> definiert fi als inhalt von title, so kann man auch DTD zusammensetzen
  • externe DTD <!DOCTYPE typName PUBLIC „titel“ [ fakultativ noch weiter Eles ] >

valid Document: wellFormed, mit DTD und konform zu ihr

nicht validierende Parser müssen DTD trotzdem lesen, z.B. für Entitities, Defaultwerte

XML-Schema

Neuere XML basierte Variante für DTD, Namensraum xsd
<xsd:schema xmln:xsd=“http://www.w3.org/2001/XMLSchema“
<element=“..“ type=“..“/>, Typen string boolean, int decimal, time date etc.
minOccurs, maxOccurs
Benutzung mittels <library xmlns:xsi =[[http://www.w3.org/2001/XMLSchema-Instance | http://www.w3.org/2001/XMLSchema-Instance
xsi:schemaLocati^pm =“file des schemas“>

Stylesheets

  • XSL (Extensible Stylesheet Language, xml => www.w3.org/XSL)
  • FO (Formatierende Objekte Teil von XSL zur reinen Formatierung)
  • XSLT (Extensible Stylesheet Language for Transformation, xml, TransformationsSyntax => www.w3.org/XSL)
  • XPATH (XML Path Language: wird für Pfad Ausdrücke innerhalb eines XMLs gebraucht www.w3.org/XSL):
    • / oder /rootEleName bedeutet RootEle
    • usw.
  • benutzt templates </xsl:template match=“/“> der Inhalt ausgegeben wird, wenn der Parser ein Ele findet, das match’d

Software

  • SAX (Simple API for XML-Parser) mit ereignis pro Attribut, Element usw.
  • DOM (Document Object Model API für XML-Parser und Writer www.w3.org/DOM )
  • Xerces: Parser von Apache (freeware) => http://xml.apache.org )
  • Xalan: XSLT Processor (über Xerces, auch ) => http://xml.apache.org)
  • Tomcat: Server für Servlets: http://jakarta.apache.org (siehe Install, Servlets in ROOT/Web-inf/web.xml eintragen)
  • Org.xml.sax.helpers.XMLReaderFactory.createXMLReader wählt Parser anhand einer SystemProperty aus, Alternativ nach Namen
  • Sax2.0 kann konfiguriert werden mit setProperty(name, Object) oder setFeature(name, boolean), validieren z.B. mit parser.setFeature(http://xml.org.sax/features/validation, TRUE)
  • DOMParser, da muss man halt den Baum abgrasen
  • DOMDocument mit XMLSerializer schreiben
  • FOP von http://xml.apache.org/dist/fop: FOP Proezessor mit pdf, awt, richtext usw.
  • JAXP: sun Package für XML enthält Xerces und Xalan (als Default Prozessoren)

Xml publishing framework

Server, der Daten aus xml für den client entsprechend mit XSLT, FOP etc. transformiert

  • Cocoon (auf Xerces usw.): http://xml.apache.org/cocoon/dist/ (braucht Servlet Engine compatible zu 2.2
  • Sitempa.xmap: xml Datei die alle xml’s, stylesheets und webadressen verwalter
  • Pipeline model: documents werden durch eine Pipeline stufenweise konvertiert
  • <map:pipeline> <map:match pattern=...> <map:generate ..... beschreibt pipeline für pattern
  • WAP Wireless Application Protocoll (Natels, Pagers, Palms usw.)
  • WML Wireless markup language. Im Weseentlichen DTD www.wapformum.org/dtd

Xml-rpc