XML verbessern?
Heizer
- xml
0 Stefan Muenz0 Joachim
0 Thomas Meinike0 Thomas Meinike0 Thomas J.S.0 Robert
Ich stehe noch am Anfang mit meinen XML-Erfahrungen, habe mich gerade so daran gewöhnt, bei XHTML Tags ohne Endtag mit /> abzuschließen, aber es gibt etwas, was mich sehr wundert:
Warum muß ich eigentlich beim Endtag den Tagnamen wiederholen?
Es würde doch völlig reicht, das so zu schreiben:
<b>test</>
da ja in XML kein anderer als der vorhergehende Tag gemaint sein kann. Eigentlich würde sogar ein einfaches > als Endtag reichen, da dieses Zeichen ohne öffnendes < keine Bedeutung hat, aber im Normalen Text immer maskiert werden muß.
Es erhöht sicherlich die Übersichtlichkeit, wenn der Name wiederholt wird, aber für rein Maschinengeschriebenes und Maschinengelesenes wäre das unerheblich, und bei großen Dokumenten würde sich auch der Speicherplatzbedarf stark reduzieren (z.B. bei SVG-Bildern, wo die Syntax schon stark daran orientiert ist, möglichst wenige Zeichen zu verwenden).
Gibt es einen Grund dafür, warum man den Namen wiederhohlen muß, den ich nicht sehe, oder wäre das ein Vorschlag für XML 1.1 (oder ist dieser Vorschlag irgendwo diskutiert?)
Vielen Dank für die Möglichkeit, etwas zu lernen
Hallo Heizer,
Warum muß ich eigentlich beim Endtag den Tagnamen wiederholen?
Es würde doch völlig reicht, das so zu schreiben:
<b>test</>
Wenn es das vornehmliche Ziel von Markupsprachen waere, jedes denkbare Byte zu sparen, dann waere das natuerlich ein wichtiger Vorschlag. Es geht bei Markupsprachen aber auch darum, dass sie fuer Menschen lesbar bleiben. Zeichne mal eine ganz normale, mittelkomplexe HTML-Datei so aus, wie von dir vorgeschlagen - und du wirst irgendwann vor lauter </> nicht mehr wissen, was wo aufhoert.
Es erhöht sicherlich die Übersichtlichkeit, wenn der Name wiederholt wird, aber für rein Maschinengeschriebenes und Maschinengelesenes wäre das unerheblich, und bei großen Dokumenten würde sich auch der Speicherplatzbedarf stark reduzieren (z.B. bei SVG-Bildern, wo die Syntax schon stark daran orientiert ist, möglichst wenige Zeichen zu verwenden).
Die gleichen Bytes (und noch viel mehr) werden auch gespart, wenn Kompressionsverfahren zum Einsatz kommen. Was du hier auf teamone.de serviert bekommst, ist z.B. alles gezippt, und erst dein Browser packt es zur Laufzeit aus. Bei einer 30KB-HTML-Datei muessen dann beispielsweise nur noch um die 7-8 KB gezippter Code an den Browser uebertragen werden. Solche Verfahren sind viel effizienter als das Sparen einzelner Zeichen, und der Quellcode selber bleibt aber ordentlich lesbar.
viele Gruesse
Stefan Muenz
hi,
du wirst irgendwann vor lauter </> nicht mehr wissen, was wo aufhoert.
Wieso, man koennte doch erklaerende Kommentare einbauen, etwa
<b> test </ #b>
;-)
*fachingsnachwirkungen*
Gruesse Joachim
Hallo,
Es erhöht sicherlich die Übersichtlichkeit, wenn der Name wiederholt wird, aber für rein Maschinengeschriebenes und Maschinengelesenes wäre das unerheblich, und bei großen Dokumenten würde sich auch der Speicherplatzbedarf stark reduzieren (z.B. bei SVG-Bildern, wo die Syntax schon stark daran orientiert ist, möglichst wenige Zeichen zu verwenden).
Wie Stefan schon ausfuehrte, ist die Lesbarkeit ein wichtiges Kriterium. Da Du SVG ansprichst: Ich habe gerade ein Pull-Down-Menue in SVG realisiert http://www.datenverdrahten.de/svglbc/?code=pulldownmenue_s und da war es schon wichtig, die End-Tags genau zu platzieren. Nur mit Einrueckungen waere das viel weniger uebersichtlich und fehleranfaellig gewesen ...
Platz sparen kann in diesem Fall das dynamische Erzeugen von SVG-Code via DOM-Scripting, siehe [http://www.datenverdrahten.de/svglbc/?code=pulldownmenue_d]. Hier wurden bei derselben Menuestruktur 1717 Bytes gespart und es sind noch viele Kommentare im Script enthalten. Beim Erstellen von umfangreicheren Menues wird der Unterschied noch deutlicher.
Also ich moechte auf die End-Tags nicht verzichten ;-).
MfG, Thomas
[Nachtrag:]
Es erhöht sicherlich die Übersichtlichkeit, wenn der Name wiederholt wird, aber für rein Maschinengeschriebenes und Maschinengelesenes wäre das unerheblich, und bei großen Dokumenten würde sich auch der Speicherplatzbedarf stark reduzieren (z.B. bei SVG-Bildern, wo die Syntax schon stark daran orientiert ist, möglichst wenige Zeichen zu verwenden).
Ich vergaß zu erwaehnen, dass SVG ja auch GZIP-komprimiert als .svgz ausgeliefert werden kann.
Aus der statischen Menuedatei (7068 Bytes) werden 1202 Bytes mit Komprimierung.
MfG, Thomas
PS: Die dynamische Datei ist groeßer als die statische, aber das liegt vor allem an den Kommentaren.
Hallo,
Warum muß ich eigentlich beim Endtag den Tagnamen wiederholen?
Es würde doch völlig reicht, das so zu schreiben:
<b>test</>
da ja in XML kein anderer als der vorhergehende Tag gemaint sein kann. Eigentlich würde sogar ein einfaches > als Endtag reichen, da dieses Zeichen ohne öffnendes < keine Bedeutung hat, aber im Normalen Text immer maskiert werden muß.
Zusätzlich zu dem was schon gesagt wurde:
Was du "verlangst" ist eine Fähigkeit von SGML, nämlich Tag-Minimalisation bzw. ein Teil von dessen, das ist in XML aus mehreren Gründen nicht erlaubt. Nich nur weil so die Übersicht besser ist, sondern weil XML eben als "SGML für Web" gedacht ist und eine der Ziele dabei war eine schnelle Verarbeitung zu ermöglichen. Für einen SGML-Parser spielt es an sich keine Rolle wie lange die Validierung dauert, aber für einen XML-Parser ist es wichtig, dass er die XML-Dokumente schnell bearbeiten kann.
Deshalb gibt es in XML einige "Beschränkungen".
Grüße
Thomas
Halli,
Warum muß ich eigentlich beim Endtag den Tagnamen wiederholen?
Es würde doch völlig reicht, das so zu schreiben:<b>test</>
Schau Dir
<a>
Inhalt von a
<b>
Inhalt von b
<c>
Inhalt von c
mehr Inhalt von b
</b>
mehr Inhalt von a
</a>
an und
<a>
Inhalt von a
<b>
Inhalt von b
<c>
Inhalt von c
mehr Inhalt von b
</>
mehr Inhalt von a
</>
Ein Parser wird Dir im ersten Fall melden, daß c nicht geschlossen wurde. Im zweiten Fall aber wird er Dir melden, daß a nicht geschlossen wurde.
Bei so einem kleinen Beispiel siehst Du noch, wo der Fehler ist.
Aber stell Dir mal eine Datei vor, bei der es zig Schachtelungsebenen mit langen Inhalten gibt.
Gibt es einen Grund dafür, warum man den Namen wiederhohlen muß, den ich nicht sehe, oder wäre das ein Vorschlag für XML 1.1 (oder ist dieser Vorschlag irgendwo diskutiert?)
Ja, mehrere:
cu,
Robert