Читать книгу LearnXML4 - hagbard123 - Страница 4
2 : Grundlagen
ОглавлениеAls erstes sollte man vielleicht verstehen wie Dokumente aufgebaut sind und aus welchen Komponenten sie bestehen
Jedes Dokument ist gegliedert in verschiedene Strukturen, einmal das Format der Ausgabe
zum zweiten der Inhalt und
zum dritten die Layout Anweisungen
Dies ist vielleicht ein wenig verwirrend, und du denkst bei einem Worddokument schreib ich doch bloß ein paar Worte, also den Inhalt aber mit dem Rest ? okay -Formatierungsanweisungen(layout)kann ich auch noch verstehen aber was soll das mit Struktur?
Also bleiben wir einmal bei einem Worddokument, da ist der Inhalt also die Schrift, dies ist bei xml auch der Inhalt. Dann noch die Formatierung(Layout), dies wird bei einem Worddokument innerhalb des headers, unsichtbar für den Benutzer abgespeichert.So auch die Anweisungen welcher Typ Dokument vorliegt. Dies geschieht beim Abspeichern in den verschiedenen Formaten wobei für jedes Format eine fest definierte Vorgabe vorliegt der so genannte doctype! Dies erledigt ein Officepaket alles automatisch, man braucht sich als Benutzer nicht darum zu bemühen, aber die Elemente sind im Prinzip die gleichen bei einer xml Datei.
Nun müssen wir uns um diese Dinge selbst kümmern, also brauchen wir als erstes eine Vorstellung wie unser Dokument aussehen soll, was es beinhalten soll, wie es dargestellt werden und ob es erweiterbar sein sollte oder nicht. Außerdem sollte man sich gleich Gedanken machen ob es portierbar, also in verschiedenen Formaten vorliegen soll.
Wir beschränken uns auf den Einsatz im Internetformat.
Nach dem man den Rahmen abgesteckt hat kann man zu einigen Grundlegenden fragen übergehen XML ist entgegen der weitläufigen Meinung nicht lediglich eine Erweiterung von HTML sondern viel mehr ,nämlich eine eigenständige ,vollständige Sprache mit einigen ganz speziellen Eigenschaften XML ist weitaus komplexer als HTML aber auch sehr viel vielseitiger
Während HTML lediglich aus ca. 60 – 120 Anweisungen, so genannten Tags, besteht ist XML weitaus schwieriger zu verstehen und aufzubauen.
Eine HTML Datei steht immer als einzelne feste (dynamisch oder statisch)Datei und wird höchsten durch ein paar Layoutanweisungen in Form einer CSS Datei erweitert. XML kann auch allein stehen, dies würde aber die Einsatzmöglichkeiten doch erheblich einschränken.
Mit XML ist es möglich Datenstrukturen und Datenaustausch vorzunehmen und Daten dynamisch aufzubereiten, deshalb würde eine Standalone Datei bei weitem nicht den Einsatzmöglichkeiten entsprechen Manchmal hört man das jetzt jeder seine eigenen Tags kreieren kann, dies ist nur bedingt richtig und auch lediglich bedingt notwendig für einen einfachen Aufbau genügt eine vorgefertigte DTD allemal
Wie ist aber eine XML Datei aufgebaut? Um den Aufbau zu verstehen sollte man vielleicht erst einmal die
Kompletten Möglichkeiten betrachten die man bei einem Aufbau benutzen und Anwenden kann
Die Anwendungsmöglichkeiten reichen von einer einfachen Seite die lediglich ein paar Daten beinhaltet bis zu sehr komplexen Datenbanksystemen mit Suchroutinen oder Darstellungen einer Strukturierten Anordnung von Datensätzen mittels eines Filters ähnlich einer Sortierfunktion in Excel! Die Syntax ähnelt sehr stark an HTML ist aber bei genauem Hinsehen total anders
Jede XML Datei besteht meist aus einer DTD die die Struktur der Daten und deren Aufbau beschreibt einer XSL Datei in der die Layoutanweisungen , sowie einige Funktionen und der eigentlichen XML Datei Um eine Programmier oder Beschreibungssprache zu erlernen ist es am einfachsten anhand eines Beispieles , alle Schritte zu erläutern und auszuprobieren Als einfachstes Beispiel das wohl jeder nachvollziehen kann nehmen wir eine einfache Artikeldatei Bevor man an das Schreiben geht sollte man sich im klaren sein über die Struktur und den Aufbau der Datei. Zudem sollte man darauf achten die Erweiterbarkeit für später im Auge zu behalten und wenn möglich gleich einzubinden. Fangen wir also an: Als erstes Fragen wir uns was in einer
Artikeldatei stehen sollte? Da wäre einmal der Name der Artikel, die Artikelnummer, der Einzelpreis, eine kurze Beschreibung, dies reicht fürs erste einmal aus denke ich Jetzt müssen wir weiter überlegen wie wir die Artikeldaten darstellen wollen? als Liste als Tabelle geordnet oder ungeordnet? Wir nehmen einmal eine Listenform Zu überlegen ist auch noch die Rangordnung der Ausgabe , d.h. welche Daten sollen als erstes stehen ,sollen alle Daten ausgegeben werden oder nicht sollen sie geordnet sein? wenn ja nach welchen Kriterien? Der einfachheit halber stellen wir sie sortiert und in einer geordneten Listenform dar Da wir jetzt also wissen wie wir die Daten darstellen wollen können wir daran gehen den Aufbau der Datei zu planen und loszulegen Fangen wir mit der DTD an. In einer DTD werden alle Strukturangaben gemacht, festgelegt welche Daten in der XML Datei später erscheinen , wie oft sie erscheinen , ob sie doppelt sein dürfen , welche Attribute sie haben und welche Tags verwendet werden können Nun gibt es verschiedene Möglichkeiten zur Verwendung einer DTD, einfach eine vorgefertigte nehmen oder aber eine eigene entwerfen. Wir wollen es ja lernen und entwerfen deshalb eine eigene!
--------------------------------------------------------------------------------
In XML kann man Daten viel strukturierter Darstellen und auch bei Bedarf sortieren oder durchsuchen in HTML vermischt sich die Formatierung mit den eigentlichen Daten ,dies kann man durch einlesen einer externen Datei mittels javascript ein wenig auffangen aber halt nicht so ganz die Formatierung muss ja irgendwo hin und muss sich an regeln halten, damit ist man in seiner Kreativität recht eingeschränkt und muss einige Kompromisse eingehen
Fakten:
Einlesen einer externen Datei ist in Javascript möglich durch verlinken des Datenscriptes oder aber durch einlesen einer Textdatei die dann aber nicht geordnet erscheint sondern als fliesstext! In XML kann man seine Daten auch einfach extern abspeichern aber geordnet!!!!!!! dies ist der wesentliche Faktor um den es eigentlich geht Wie alle wissen kann man Daten darstellen eingeschlossen in tags(befehle) diese sind in html und auch in Javascript festgelegt und vorgegeben ,man kann daran nichts ändern!
In xml hat man nun die Möglichkeit alle Formatierungsbefehle zu wählen wie man sie benötigt dies ist möglich mit Hilfe einer dtd in der man das aussehen und die Struktur der Daten genau festlegt!!!
so ist es machbar eine klare genaue Definition der Ausgabe zu erreichen schauen wir uns unser alten Beispiel an eine liste oder Tabelle in der wir den Namen Vornamen und Telefon ausgeben
In xml sieht das ganze folgendermaßen aus :
in der dtd legt man fest welche art von Daten ausgegeben werden sollen und wie die Struktur des ganzen ist also braucht man einen Container Adressen in dem die Namen Vornamen und Telefonnummern gespeichert werden den Container erzeugt man in der dtd damit im eigentlichen Dokument nicht zu definiert werden braucht
jetzt haben wir einen Container in dem der name,vorname und die telefonnummer gespeichert wird welcher Name etc ist dabei ganz unerheblich !!!!ist somit beliebig aender und austauschbar! : Da Daten und Darstellung voneinander getrennt sind, werden Änderungen im Layout relativ einfach (verglichen mit HTML).
Ein Style Sheet definiert dann die Darstellung von Tabellen oder Listen. Die Suche nach Daten ist einfach und effizient. Suchmaschinen können durch die Strukturierung der Daten diese wesentlich gezielter auswerten. Komplexe Datenstrukturen können vermittelt werden. Die Information ist für Außenstehende Personen viel leichter verständlich und man benötigt z.B. weniger Einarbeitungszeit. In unserem Beispiel ist es offensichtlich, dass die ZAHL die Postleitzahl der Wohnadresse des jeweiligen Kunden darstellt. XML erklärt
sich somit von selbst!
Um die Funktionsweise von DB Abfragen etc zu verstehen sollte man vielleicht zuerst einmal den Aufbau verstehen , und die Wirkungsweise der einzelnen Komponenten
--------------------------------------------------------------------------------
Eine Datenbank muss immer irgendwo hinterlegt sein das zugehörige Abfragemodul muss auch irgendwo gespeichert sein und mit der Datenbank kommunizieren d.h. Daten müssen ausgetauscht werden was in der Regel über ein script oder eine Routine(kleines Programm) erfolgt nun muss diese Routine die Eingabe des Users aufnehmen und verarbeiten d.h. prüfen ob der nachgefragte Datensatz vorhanden ist!
Also vergleicht er die Eingabe mit den hinterlegten Daten diese müssen also verfügbar sein! normalerweise laufen Scripte aber clientseitig sind also vorgeladen auf den PC des Users ,die Datenbank muss also im nächsten schritt abgefragt werden ,diese liegt aber auf einem Server und wird nicht zum client übermittelt "!(logischerweise)also muss die abfrage auch serverseitig laufen was sie auch tut (gewöhnlich)
Die Kommunikation zwischen client und Server muss also ein ständiges hin und her sein bezieht man jetzt die transferrate der Leitung ,,die Leistung des Servers und die Größe der jeweiligen Datenbank mit ein kommt man zum folgerichtigen Ergebnis das so eine abfrage unter umständen ziemlich lange dauern kann!!!
Dies zu umgehen ist XML in Verbindung mit Javascript hervorragend geeignet wie wir gelesen haben kann man in xml dateninseln erschaffen und sie in html anzeigen mittels einer id eine feste variable zuweisen und sie speichern (verarbeiten) mit javascript kann man hervorragend eine suchroutine schreiben !
Javascript lauft clientseitig wird also immer vollständig geladen und gecached wenn man es nicht vermeidet also liegt der Schluss doch nahe einen weg zu wählen mit dem man die vorteile einer serverseitigen Datenbank und einer clientseitigen abfrage paaren kann mit dem einfachen Handling von xml!!!!!!!
Dies alles ohne ASP,JSP,CGI oder PHP einsetzen zu müssen dieser weg hat noch einen anderen Vorteil , nämlich die Aktualisierung aber dazu später mehr Die Suchroutine sollte die Abfragen ausführen ,dazu kann man zwei Möglichkeiten wählen
1)man gibt die Suchbegriffe fest vor und hinterlegt sie in einer Datei
2)man lässt die Routine die Datenbank durchsuchen
Ersteres hat den Vorteil dass man keine sql abfrage durchzuführen braucht also einfach mittels eines jscripts die suchmaske vorgibt ,außerdem kann man falsche oder fehlerhafte sucheingaben abfangen indem man diese vorsieht in der Routine! die zweite Möglichkeit durchforstet die db direkt(mittels sql oder asp) muss also nicht extra aktualisiert werden, findet aber auch lediglich begriffe die exakt angegeben wurden für was man sich entscheidet ist letztendlich geschmacksache! aber back to XML Dies ist die einfache Definition einer Datensammlung bib ist die Bibliothek in dieser befindet sich das Erscheinungsjahr des Buches ,der titel,author und publisher,sowie Name und lastname(Nachname)des Autors wie direkt ins Auge fällt ist der author und lastname identisch, des Weiteren Publisher und Name sind gleich bzw. haben den gleichen Inhalt! dies ist eine relativ einfache art und weise Suchbegriffe für dateninseln zu verbinden in diesem fall ist author und Nachname ein begriff,folglich kann dieser Eintrag gefunden werden wenn nach author oder Nachname gesucht wird!
<bib > < book year="1990">
< title> Erlauterungen zur Datenbank </title>
< author> <lastname> Mann </lastname> </author>
< publisher> <name> Thomas </name > </publisher>
< /book>
</bib>
Nun ist dies natürlich erst der Anfang - wir können also XML Dokumente transformieren und als HTML oder reinen Text ausgeben.
Nun können wir noch einen Schritt weitergehen und diese Daten doch auch gleichzeitig in Flash und/oder php/asp weiterverwerten?! So haben wir doch lediglich einen Bruchteil der Arbeit die wir sonst hätten- oder nicht.
Dies reicht natürlich nicht aus und deshalb gehen wir bis ins extrem und verwenden unsere XML Rohdaten als Datenbasis (dbms) und voila! EINMAL schreiben - beliebig oft und in beliebigen Format weiterverwenden, dies ist Effektivität.
Fangen wir also an: Als erstes Fragen wir uns was in einer Artikeldatei stehen sollte?
Da wäre einmal der Name der Artikel, die Artikelnummer, der Einzelpreis, eine kurze Beschreibung,dies reicht fürs erste einmal aus denke ich
Jetzt müssen wir weiter überlegen wie wir die Artikeldaten darstellen wollen? als Liste als Tabelle geordnet oder ungeordnet?
Wir nehmen einmal eine Listenform
Zu überlegen ist auch noch die Rangordnung der Ausgabe d.h. welche Daten sollen als erstes stehen ,sollen alle Daten ausgegeben werden oder nicht sollen sie geordnet sein? wenn ja nach welchen Kriterien? Der einfachheit halber stellen wir sie sortiert und in einer geordneten Listenform dar
Da wir jetzt also wissen wie wir die Daten darstellen wollen können wir daran gehen den Aufbau der Datei zu planen und loszulegen
Fangen wir mit der DTD an.
In einer DTD werden alle Strukturangaben gemacht, festgelegt welche Daten in der XML Datei später erscheinen , wie oft sie erscheinen , ob sie doppelt sein dürfen , welche Attribute sie haben und welche Tags verwendet werden können Nun gibt es verschiedene Möglichkeiten zur Verwendung einer DTD, einfach eine vorgefertigte nehmen oder aber eine eigene entwerfen. Wir wollen es ja lernen und entwerfen deshalb eine eigene!
Eine DTD wird immer !!! wie folgt aufgebaut <?!ELEMENT TAG (Attribut)> in unserem Fall also:
<?!ELEMENT artikel (#PCDATA)>
PCDATA bedeutet , das der Inhalt schon geparst ist und im fertigen Format ausgegeben wird Da dieser einfache Aufbau bei weitem nicht ausreicht für eine Artikeldatei müssen wir noch einige Elemente definieren und einbauen in unsere DTD Dazu wieder die Frage ,aus was besteht ein Artikel?
siehe oben Artikelnamen Artikelpreis Artikelnummer Artikelbeschreibung um uns einiges an Schreiberei zu sparen kürzen wir diese aber ab
Artikelnamen = aname Artikelpreis = aDM und aeuro Artikelnummer = anummer Artikelbescheibung = abeschr
das ganze sieht dann wie folgt aus
<?!ELEMENT artikel (aname,aeuro?,aDM?,abeschr*,anummer)>
Das Element Artikel besteht aus Name,Preis in DM und Euro ,Beschreibung und Nummer Die Symbole hinter dem Attribut haben verschiedene Bedeutungen: aname = Der Name muss enthalten sein wenn nichts dahinter steht aeuro? = Darf nur einmal enthalten sein bei einem Fragezeichen abeschr* = Darf null oder mehrmals enthalten sein gekennzeichnet durch den Stern anummer | = Kann muss aber nicht enthalten sein | ist das Zeichen für oder Damit hätten wir unsere erste kleine DTD kreiert in der alle relevanten Daten strukturiert sind Als nächsten Schritt entwerfen wir die XML Datei in der die Daten enthalten sind In einer XML Datei ist genaustens darauf zu achten dass alle Tags abgeschlossen werden sollte dies nicht der Fall sein kommt es zu einer Fehlermeldung!!
Fangen wir also an: Als erstes Fragen wir uns was in einer Artikeldatei stehen sollte?
Da wäre einmal der Name der Artikel, die Artikelnummer, der Einzelpreis, eine kurze Beschreibung,dies reicht fürs erste einmal aus denke ich
Jetzt müssen wir weiter überlegen wie wir die Artikeldaten darstellen wollen? als Liste als Tabelle geordnet oder ungeordnet?
Wir nehmen einmal eine Listenform
Zu überlegen ist auch noch die Rangordnung der Ausgabe , d.h. welche Daten sollen als erstes stehen ,sollen alle Daten ausgegeben werden oder nicht sollen sie geordnet sein? wenn ja nach welchen Kriterien? Der einfachheit halber stellen wir sie sortiert und in einer geordneten Listenform dar
Da wir jetzt also wissen wie wir die Daten darstellen wollen können wir daran gehen den Aufbau der Datei zu planen und loszulegen
Fangen wir mit der DTD an.
In einer DTD werden alle Strukturangaben gemacht, festgelegt welche Daten in der XML Datei später erscheinen , wie oft sie erscheinen , ob sie doppelt sein dürfen , welche Attribute sie haben und welche Tags verwendet werden können Nun gibt es verschiedene Möglichkeiten zur Verwendung einer DTD, einfach eine vorgefertigte nehmen oder aber eine eigene entwerfen. Wir wollen es ja lernen und entwerfen deshalb eine eigene!
Eine DTD wird immer !!! wie folgt aufgebaut <?!ELEMENT TAG (Attribut)> in unserem Fall also:
<?!ELEMENT artikel (#PCDATA)>
PCDATA bedeutet , das der Inhalt schon geparst ist und im fertigen Format ausgegeben wird Da dieser einfache Aufbau bei weitem nicht ausreicht für eine Artikeldatei müssen wir noch einige Elemente definieren und einbauen in unsere DTD Dazu wieder die Frage ,aus was besteht ein Artikel?
siehe oben Artikelnamen Artikelpreis Artikelnummer Artikelbeschreibung um uns einiges an Schreiberei zu sparen kürzen wir diese aber ab
Artikelnamen = aname Artikelpreis = aDM und aeuro Artikelnummer = anummer Artikelbescheibung = abeschr
das ganze sieht dann wie folgt aus
<?!ELEMENT artikel (aname,aeuro?,aDM?,abeschr*,anummer)>
Das Element Artikel besteht aus Name,Preis in DM und Euro ,Beschreibung und Nummer Die Symbole hinter dem Attribut haben verschiedene Bedeutungen: aname = Der Name muss enthalten sein wenn nichts dahinter steht aeuro? = Darf nur einmal enthalten sein bei einem Fragezeichen abeschr* = Darf null oder mehrmals enthalten sein gekennzeichnet durch den Stern anummer | = Kann muss aber nicht enthalten sein | ist das Zeichen für oder Damit hätten wir unsere erste kleine DTD kreiert in der alle relevanten Daten strukturiert sind Als nächsten Schritt entwerfen wir die XML Datei in der die Daten enthalten sind In einer XML Datei ist genaustens darauf zu achten dass alle Tags abgeschlossen werden sollte dies nicht der Fall sein kommt es zu einer Fehlermeldung!!