XML
Extensible Markup Language
Was ist XML(Extensible Markup Language)? |
Warum wurde XML entwickelt? |
Wo kann XML eingesetzt werden? |
Einführende Beispiele |
Wohlgeformtheit und Gültigkeit |
Dokumentstruktur |
Besonderheiten von HTML
<Email>
<Empfänger>
WWeigel@fh-wedel.de </Empfänger>
<Absender name="pan
yi"> wi6658@fh-wedel.de </Absender>
<Betreff> Einladung
</Betreff>
<Inhalt mime="html">
...</Inhalt>
</Email>
<!--Ende der ersten Emailadresse-->
<Email>
<Empfänger>
AWolf@fh-wedel.de </Empfänger>
<Absender name="pan
yi"> wi6658@fh-wedel.de </Absender>
<Betreff> Einladung
</Betreff>
<Inhalt mime="html">
...</Inhalt>
</Email>
<!--Ende-->
<?XML version="1.0"?>
<!DOCTYPE simpleDoc SYSTEM "ExternDTD.dtd"[
<!ELEMENT simpleDoc
#PCDATA>
]>
<!--Bisher ist der Prologteil(Dokumentvorspann)-->
<simpleDoc>Hello, world!<simpleDoc>
Wenn so ein Dokument von einem XML-Parser ohne Fehler in eine Baumstruktur darstellen läßt, ist er wohlgeformt. Wohlgeformtheit ist die Mindesanforderung an ein XML-Dokument.
Es gibt Parser, die nur die Wohlgeformtheit überprüfen
können und Parser, die auch Gültigkeitsüberprüfung
beherrschen.
Markuptypen | Beschreibung | Beispiele |
Element |
|
<A image="pfeil.gif"/>
<Buch> <Autor>Neil Bradley</Autor> </Buch> |
Kommentar |
|
<!--Das ist ein Kommentar--> |
CDATA |
|
<![CDATA[
<gruss> Hallo, Welt! </gruss> ]]> |
Entity |
|
ein Beispiel für Textentity:
<!ENTITY fh-wedel "Fachhochschule Wedel">
ein Beispiel für Zeichenenttity: <!ENTITY greater >> oder <!ENTITY greater >> |
ProcessInstruction(PI) |
<? Identifikator Anweisung ?> |
<? sun-jdk version=1.1.6 ?> |
Notation |
|
<!NOTATION GIF87A SYSTEM "GIF">
<!NOTATION PS SYSTEM "file:/usr/bin/gv"> <!ENTITY handbuch SYSTEM "handbuch.ps" NDATA PS> |
Elementtype-Declaration
definiert ein Element- wie das Element heißt, welche Kinder-Elemente
er hat, welche Attribute er hat und welche Werte die Attribute annehmen
dürfen.
Element-Typ | Erklärung | Beispiele |
EMPTY | ein leeres Element
kann Attribute besitzen, aber kein Text oder Kinderelemente |
DTD: <!ELEMENT elem EMPTY>
Content: <A/> oder <A></A> |
PCDATA(Pasered Character Data) | Text | <!ELEMENT Absender #PCDATA> |
ANY |
wohlgeformten Dokumenten ohne DTD zu Dokumenten mit DTD |
<!ELEMENT elem ANY> |
children |
|
<!ELEMENT elem (child1, child2)> <!ELEMENT child1 #PCDATA> <!ELEMENT child2 #PCDATA> Im Dokumentinhalt sieht es so aus:
<!ELEMENT buch (titel,untertitel*,autor+)> |
Mixed | Der Inhalt des Elements besteht aus PCDATA und Kinderelemente. | <!ELEMENT elem (#PCDATA|child1)*> |
Attribut-Deklaration
Attribut-Deklaration definiert benutzbare Attribute eines Elementes.
Syntax für Attributdeklaration:
<!ATTLIST Elementname
1.Attribut Typ Default
2.Attrribut Typ Default
...
>
ein Beispiel:
<!ATTLIST buch
ISBN ID #REQUIRED
zustand (verfügbar|ausgeliehen) 'verfügbar'
>
Attributtypen:
Attribut-Typen | Beschreibung | Beispiele |
ID |
|
<!ELEMENT Buch (Autor, Titel)>
<!ATTLIST Buch ISBN ID #REQUIRED Zustand (ausgeliehen|verfügbar) #REQUIRED 'verfügbar' > <!ELEMENT Autor #PCDATA> <!ELEMENT Titel #PCDATA> |
IDREF | verweist auf ein Element im Dokument. Der Wert muß immer eine ID von einem Element sein | |
ENTITY | Der Wert des Attributes muß unparsed Entity sein | <!ATTLIST psdatei filename ENTITY #REQUIRED> |
CDATA | String | <!ATTLIST Student tel CDATA> |
NMTOKEN | nur Kombination aus Buchstaben, Ziffer, '.', ':', '-', '_' erlaubt |
Defaultdeklaratio:
Defaultdeklaration | Beschreibung | Beispiel |
#REQUIRED | Das Attribut muß immer vorhanden sein | <!ATTLIST Student
MatrikelNr ID #REQUIRED |
#IMPLIED | Das Attribut ist optional | tel CDATA #IMPLED |
#FIXED | Das Attribut hat immer den selben Wert |
Hochschule CDATA #FIXED
'FH-Wedel' > |
general entity | wird nur im Dokumentinhalt benutzt | <!ENTITY fh-wedel "Fachhochschule Wedel">
&fh-wedel; |
parameter entity | hat den selben Zweck wie Generalentity,
ist aber nur in DTD(DokumenTypeDefinition) benutzbar. |
<!ENTITY % fh-wedel "Fachhochschule Wedel">
%fh-wedel; |
internal entity | referenziert Zeichen oder Zeichenkette. | <!ENTITY lt <>
<!ENTITY wi "Wirtschaftinformatik"> &wi; |
externel entity |
|
<!ENTITY myAdress SYSTEM "/home/adress.xml">
<!ENTITY myAdressIcon SYSTEM "/home/icons/home.gif" NDATA GIF87A> |
Zu beachten ist, wenn Entityreferenz in der Entitydeklaration vorkommen. Hier wird die Entityreferenz nocht nicht durch den Ersetztungstext ersetzt. Erst im Dokumentinhalt wird die Entityreferenz durch den Ersetztungstext ersetzt. z.B
in Doc1:
<!ENTITY jdkVersion "version: &version;">
in Doc2:
<!DOCTYPE SYSTEM "Doc1" [
<!ENTITY version
"1.1.4">
]>
in Doc3:
<!DOCTYPE SYSTEM "Doc1" [
<!ENTITY version
"1.2">
]>
Literatur zum Thema XML im Web:
www.w3.org
www.xml.com
ist sehr zu empfehlen, da man außer den sehr abstraktenn Spezifikationen
viel Hintergrundinformation und gute Einführung zum Thema XML findet.
Bücher zu XML
XML Companiion von Neil Bradley, addison-Wesley
ISBN:0-201-34285-5
XML-Parser
Alle Parser sind frei und mit Java geschrieben.
ibm_xml_parser
microsoft_xml_parser
sun_xml_parser
XML-Editoren
Mit einem XML-Editor kann man Speicherstruktur bequem definieren und die Daten in die Speicherstruktur ausfüllen.
XML-Notepad(beta
1) kennt bisjetzt leider noch keine DTD.