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: < <, > >, " “ &apos ’, & & 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
<!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
- rpc remote procedure call
- rmi remote method invocation java Erweiterung von rpc
- JRMP: Java Protokoll für rmi
- http://www.xml-rpc.com bzw. http://xml.apache.org/xmlrpc