Ich habe mal ein wenig mit einer XML-Datei von einem embedded Ger�t rumgespielt, d.h. ich habe hier ein Cisco 7960 IP Phone auf dem Tisch, und habe mal ein typisches Eingabeformular genommen:
-rw-r--r-- 1 kk members 711 Oct 1 10:16 eins.xml [EMAIL PROTECTED] /var/tmp $ cat eins.xml <?xml version="1.0" encoding="ISO-8859-1" ?> <CiscoIPPhoneInput> <Title>XAL-Telefonbuch</Title> <Prompt>Namen eingeben:</Prompt> <URL>http://192.168.254.12:80/ciscoxml/tb.php4</URL> <InputItem> <DisplayName>Nachname</DisplayName> <QueryStringParam>nachname</QueryStringParam> <InputFlags>A</InputFlags> <DefaultValue></DefaultValue> </InputItem> <InputItem> <DisplayName>Vorname</DisplayName> <QueryStringParam>vorname</QueryStringParam> <InputFlags>A</InputFlags> <DefaultValue></DefaultValue> </InputItem> <InputItem> <DisplayName>Firma</DisplayName> <QueryStringParam>firma</QueryStringParam> <InputFlags>A</InputFlags> <DefaultValue></DefaultValue> </InputItem> </CiscoIPPhoneInput> Wie man sieht, ist das vollkommen haneb�chenes XML. Jeder vern�nftige Mensch h�tte das "CiscoIPPhone" aus allen betreffenden Tags weggelassen und dann ggf. mit Namespaces qualifiziert. Ich habe das mal als Nicht-XML in LISP-Syntax geschrieben und aus den Tagnamen die Cisco-Werbung weggemacht: -rw-r--r-- 1 kk members 401 Oct 1 10:19 zwei.xml [EMAIL PROTECTED] /var/tmp $ cat zwei.xml <?xml version="1.0" encoding="ISO-8859-1" ?> (input (title XAL-Telefonbuch)(prompt Namen eingeben:) (url http://192.168.254.12:80/ciscoxml/tb.php4) (item (displayname Nachname) (querystringparam nachname) (inputflags A)(defaultvalue)) (item (displayname Vorname) (querystringparam vorname)(inputflags A)(defaultvalue)) (item (displayname Firma)(querystringparam firma)(inputflags A)(Defaultvalue)) ) Das sind nur noch 56% der Gr��e. Nehmen wir mal an, wir k�nnten a la Postscript Funktionsnamen kurz definieren: -rw-r--r-- 1 kk members 348 Oct 1 10:21 drei.xml [EMAIL PROTECTED] /var/tmp $ cat drei.xml <?xml version="1.0" encoding="ISO-8859-1" ?> (def input j prompt p url u item i displayname d querystringparam q inputflags f defaultvalue v title t) (j (t XAL-Telefonbuch)(p Namen eingeben:) (u http://192.168.254.12:80/ciscoxml/tb.php4) (i (d Nachname) (q nachname) (i A)(v)) (i (d Vorname) (q vorname)(i A)(v)) (i (d Firma)(q firma)(i A)(v)) ) Das sind nur noch 48% der Ausgangsgr��e. Nehmen wir weiter an, das XML-Banner da oben und die Kurzcodierungen sind implizit klar. -rw-r--r-- 1 kk members 189 Oct 1 10:22 vier.xml [EMAIL PROTECTED] /var/tmp $ cat vier.xml (j (t XAL-Telefonbuch)(p Namen eingeben:)(u http://192.168.254.12:80/ciscoxml/tb.php4)(i (d Nachname)(q nachname)(i A)(v))(i (d Vorname)(q vorname)(i A)(v))(i (d Firma)(q firma)(i A)(v))) Das sind nur noch 26% der Ausgangsgr��e. Es ist immer noch ein manuell kontrollierbares, mit einem telnet testbares Protokoll, in dem die Felddefinitionen immer noch variabel sind. �bergang auf ein statisches ASCII-Format, hier CSV: -rw-r--r-- 1 kk members 153 Oct 1 10:30 fuenf.csv [EMAIL PROTECTED] /var/tmp $ cat fuenf.csv "XAL-Telefonbuch","Namen eingeben:",,"http://192.168.254.12:80/ciscoxml/tb.php4" "Nachname","nachname",A,"" "Vorname","vorname,A,"" "Firma","firma",A,"" Das sind 21% der Ausgangsgr��e. Alles mal gzip'ed: [EMAIL PROTECTED] /var/tmp $ ls -l eins.xml.gz zwei.xml.gz drei.xml.gz vier.xml.gz fuenf.csv.gz -rw-r--r-- 1 kk members 270 Oct 1 10:21 drei.xml.gz (37%) -rw-r--r-- 1 kk members 296 Oct 1 10:16 eins.xml.gz (41%) -rw-r--r-- 1 kk members 148 Oct 1 10:30 fuenf.csv.gz (20%) -rw-r--r-- 1 kk members 159 Oct 1 10:22 vier.xml.gz (22%) -rw-r--r-- 1 kk members 250 Oct 1 10:19 zwei.xml.gz (35%) Beachte, da� Fall fuenf durch die Kompression nur noch um ganze 5 Bytes schrumpft. Das Ganze lohnt also nur noch f�r gr��ere Dokumente, nicht f�r so kleine Dateien. In diesem speziellen Fall w�rde ASN.1 eher wenig bringen, da hier keine Integers oder andere Zahlen sind, die man statt als "4711" (4 Byte) als 00 00 12 67 codieren w�rde (auch 4 Byte). Die Feldnamen und Texte lassen sich hier kaum k�rzer darstellen. Und die OIDs sind unter Umst�nden sogar l�nger als die Feldbezeichner in drei.xml. Auch ein anderes bin�res Codierungsformat w�rde kaum noch was wegziehen. Es ist aber auch zu erkennen, da� XML in der Tat zu gew�tzig ist. Kristian
