XML Grundlagen

Veröffentlicht: 19. Jun 2000 | Aktualisiert: 14. Jun 2004

Von Hannes Preishuber

Diesen Artikel können Sie hier lesen dank freundlicher Unterstützung der Zeitschrift:

Bild03

XML ...eXtensible Markup Language wird wohl die Zukunft ähnlich verändern wie damals HTML. Beide sind vom w3C verabschiedet und damit eine Art Norm fürs Internet. XML ist keine Sprache, sondern der Grundstein für Erweiterbarkeit. Das eigentlich neue an XML ist, dass damit Daten transportiert werden können. Ermöglicht wird dies durch die Umnutzung der Meta Tags in Formatierungstags. Mit HTML geht's darum WIE die Information im Browser dargestellt wird mit XML WELCHE Info zur Verfügung steht.

Ich habe mit Word 2000 ein Dokument erstellt und dieses als HMTL gespeichert. Die Dokument Info wird dabei im XML "Format" abgelegt.

<title>Name</title> 
<!--[if gte mso 9]><xml> 
<o:DocumentProperties> 
<o:Author>pre</o:Author> 
<o:LastAuthor>pre</o:LastAuthor> 
<o:Revision>1</o:Revision> 
<o:Created>1999-12-03T08:18:00Z</o:Created> 
....

Deutlich zu erkennen ist die Feldzuweisung über:

<feld> wert </feld>.

Damit ist die Information strukturiert. XML ermöglicht auch noch eine Hierarchie der Daten über so genannte Nodes. Zur Anzeige eignet sich dann ein Programm mit XML Parser wie z.B. Internet Explorer ab Version 4.0. Die XML Funktionalität ist dabei als COM Objekt installiert (msxml.dll). Über dieses COM Objekt können Sie in jeder Programmiersprache z. B. VB oder C++ XML Zugriffe einbauen.

Bild01

Hier ein Beispiel einer XML Datei.

<i> 
<Umsatz> 
<Mitarbeiter ID="1"> 
<!--Das ist ein Kommentar. --> 
<Name>Hannes</Name> 
<Summe>2000</Summe> 
</Mitarbeiter> 
<Mitarbeiter ID="2"> 
<Vorname>Fred</Vorname> 
<Nachname>2123</Nachname> 
</Mitarbeiter> 
</Umsatz></i>

Wenn Sie diese Datei mit dem Browser öffnen (Extension XML) sehen Sie die Daten. Ein einfaches Werkzeug zum Erstellen von XML Dateien ist das XML Notepad.

Bild02

Diese Werkzeug bekommen Sie kostenlos als Beta unter: https://msdn.microsoft.com/xml/notepad/xpsetup.exe

Für die Darstellung im Browser gibt es die XSL Files (eXtensible Style Language). Mit diesen kann ich in der Form:

<xsl:value-of select="price" /> 

auf Werte aus dem XML Dokument zugreifen. Das schöne daran ist, dass die XML Daten nur einmalig geladen werden und durch XSL gefiltert, umsortiert oder einfach anders dargestellt werden können.
Richtig interessant wird die Anwendung von XML als Transportmedium zwischen Applikationen. So hat der Microsoft Site Server 3.0 seit einiger Zeit eine Komponente, die auf Wunsche aus einer Bestellung, ein XML File im EDI Format erstellt. Dieses kann dann per E-Mail, FTP oder auch anders zur Zielanwendung transportiert werden (maptoxml). Am Ende der Reise werden die Daten eingelesen. Die Bestellung erscheint automatisch z.B. im Warenwirtschaftsystem.
Damit sind wir aber auch bei einer Schwäche von XML. XML ist keine Sprache. Es gibt auch keine definierten Feldnamen oder Variablentypen. Deshalb benötigen wir noch eine Norm, wie z.B. EDI (Electronic Data Interchange). Microsoft hat hier mit anderen Unternehmen eine Initiative gestartet, die sich um die Standardisierung von Datenaustausch zwischen Unternehmen kümmert (www.Biztalk.org). Dabei werden in so genannten Schemas branchenspezifisch die Definitionen hinterlegt . Dazu aber später mehr.
Um aus VB heraus Datenzugriff auf ein XML Dokument zu ermöglichen, gibt es einen XML Code Generator für VB der Klassen erstellt. XML wird dabei in Zukunft von vielen Microsoft Produkten implementiert. (siehe SQL 7.0)
Und nun wollen wir mal einen Exporter von SQL nach XML in Visual Basic entwickeln.
Adodc1.Recordset.Save "c:\Test3.xml", adPersitsXML
Ja das ist alles! Einfache eine Form, eine ADODB Verbindung und einen Button in dem obiger Code steht. Ergebnis ist ein XML File.
Aus einer ASP Seite heraus, kann man den XML Code in die Seite einbauen oder explizit aus einem XML Dokument laden. Als Server Objekt wird das XMLDOM (Document Object Modell) verwendet. Dies Seite muss aber die Endung ASP haben, da ansonsten der Interpreter des IIS nicht greift. Folgender Beispielcode zeigt die Ansätze.

<i> Set xml = Server.CreateObject("Microsoft.XMLDOM") 
Set xsl = Server.CreateObject("Microsoft.XMLDOM") 
path = Request.ServerVariables("PATH_TRANSLATED") 
fileXML = Replace(path, ".asp", ".xml",1) 
fileXSL = Left(path, InstrRev(path, "\")) + "MsMag.xsl" 
Set fso = Server.CreateObject("Scripting.FileSystemObject") 
Set f = fso.OpenTextFile(path, 1, 0) 
strXML = f.ReadAll() 
f.Close 
strEndAsP = Chr(37) & ">" 
x = Instr(strXML, strEndASP) 
strXML = Right(strXML, Len(strXML)-x-(Len(strEndASP)+1)) 
Set f = fso.CreateTextFile(fileXML) 
f.Write strXML 
f.Close 
xml.load(fileXML) 
xsl.load(fileXSL) 
Response.Write xml.transformNode(xsl.documentElement) 
fso.DeleteFile fileXML 
Response.End 
</i>

Nun zum Vergleich noch Zugriff aus Jscript (ECMA)

<i> 
var xml, xsl; 
var fileXML, fileXSL, fileHTM; 
var fso, f; 
fileXML = WScript.Arguments(0); 
fileXSL = WScript.Arguments(1); 
fileHTM = WScript.Arguments(2); 
xml = new ActiveXObject("Microsoft.XMLDOM"); 
xsl = new ActiveXObject("Microsoft.XMLDOM"); 
xml.load(fileXML); 
xsl.load(fileXSL); 
fso = new ActiveXObject("Scripting.FileSystemObject"); 
f = fso.CreateTextFile(fileHTM); 
f.Write(xml.transformNode(xsl.documentElement)); 
f.Close();</i> 

Na alles klar? Im nächsten Artikel werden wir eine kleine Beispielanwendung bauen.

Fragen und Anregungen zu den fehlenden Themen per E-Mail an ASP@ppedv.de