Am Freitag, 28. Februar 2003 08:42 schrieb Michael Kastner:
> Hallo Max,
>
> Max Trense wrote:
> > XML ist an sich wirklich kein Overkill:
> >
> > <?xml version="1.0" encoding="us-ascii"?>
> > <HelloWorld><Variable scope="private">Wert</Variable></HelloWorld>
>
> Dein Beispiel für mich eher die Bestätigung des Overkills. BTW wenn
> Hello World nur ein Element hat, dann genügt es, wenn man den Wert
> ohne weiteren Tag direkt in das Wurzelelement "HelloWorld" schreibt:
>
> <?xml version="1.0" encoding="us-ascii"?>
> <HelloWorld>Wert</HelloWorld>

Aber das Dokument HelloWorld hat doch nicht den Wert 'Wert' sondern die 
Variable 'Variable'.

> Aber da ist halt immernoch sehr viel redundanz drin. Wenn HelloWorld
> geschlossen wird, dann würde _ein_ Zeichen für das Schließen genügen.
>
> Man könnte, wenn man eine andere Nomenklatur verwendet, das Dokument
> auch so kodieren:
>
> Helloworld {Wert}

Du kannst für XML viele noch tollere Darstellungsweisen finden. Aber die 
Frage ist, wem das nützt. XML ist primär ein Austauschformat. XML soll 
sicherstellen, dass es jeder versteht. Asiatische Tastaturen haben zum 
Beispiel oft keine geschweiften Klammern. Und wenn Du nur ein Zeichen 
zum Schließen verwendest, kannst Du nicht sicherstellen, dass Dein 
Dokument noch vollständig ist, wenn Du es segmentierst und wieder 
zusammensetzt. Ausserdem ist das leichter lesbar. Und wo ist in Deinem 
Beispiel 'scope="private"'?

> Die geschweiften Klammern sind nur ein Beispiel, weil man die ja von
> C oder java für die Markierung von Blöcken bereits kennt.
>
> Wenn es mehrere Variable gibt, dann würde das Dokument in XML z.B. so
> aussehen.
>
> <HelloWorld>
>     <Variable>Wert</Variable>
>     <Variable>Wert1</Variable>
>     <Variable>Wert3</Variable>
> </HelloWorld>
>
>
> Im Gegensatz dazu in der geklammerten Schreibweise:
>
> HelloWorld {
>    Variable {Wert1}
>    Variable {Wert2}
>    Variable {Wert3}
> }
>
> Damit hat man z.B. die Redundanz beim Schließen des Tags rausgenommen
> und das wiederum würde die die Durchläufe beim Parsen verkürzen.

Der Parser würde dann aber nicht erkennen, wenn das Dokument nicht 
wohlgeformt ist. So etwa:
<tag1> bla
<tag2> bla
</tag1> bla
</tag2>

Das würde Dein Parser nicht erkennen und es folglich falsch 
interpretieren. Wenn Du XML von Hand eingibst können solche Fehler 
schon mal passieren. Und wer möchte so einen Verdreher z.B. in einer 
Lohnabrechnungstabelle haben ;-((

> Für den Platzverbrauch auf der Festplatte oder wenn sich ein ganzes
> Objekt im Speicher befindet, wäre das auch recht positiv.

Beim Speicherplatz auf der Platte möchte ich sehen, wie sich das 
auswirkt ;-) Die Knotennamen sind sowieso meistens kürzer als die 
Daten, die sie umschließen. Ausserdem steht es Dir frei, das Resultat 
mit Gzip zu komprimieren. Im Speicher musst Du sowieso eine andere 
Repräsentationsform finden. Niemand würde ein XML-Dokument als 
Zeichenketten im Speicher lassen und on-the-fly parsen. Ich würde das 
eher als geordneten Baum implementieren.

> Ich mein ja nur.

Realistisch ist XML sowieso nicht viel mehr, als ein Framework, mit dem 
Du arbeiten kannst, oder es lassen. Allerdings finde ich es gut, wenn 
alle dieselben Standards verwenden.
Wenn Du Interesse hast, dann schau doch einfach mal beim C++ Workshop 
vorbei. Ich schreibe nämlich im Moment an einem kompletten 
XML-Interpreter. Den werde ich dann auch irgendwann zumindest teilweise 
vorstellen.

-- 
+    Max Trense
+    [EMAIL PROTECTED]
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an