Verschiedene Versionen eines Dateiformats managen <-> Design-Frage



  • Hm naja es ging mir eigentlich auch weniger ums Format. Meistens ist man sowieso gezwungen z.B. XML zu nehmen, aber das finde ich jetzt auch eher unwichtig. Dass man am Anfang sowas wie nen Versionsstring reinbaut, das war mir auch klar. Aber wie sieht das dann im Programm aus ? Wie designe ich das Programm z.B., dass ich sowohl Version 1.0 als auch Version 1.1 meines Formats einlesen kann ? Mit der "Brechstange" also z.B. einfache IFs/SWITCHes geht das natürlich, aber gibts da nicht elegantere Lösungen oder irgendelche Guidelines wie man sowas am besten macht ?



  • ich würds so machen, dass es bestimmte schlüsselwörter (tags) gibt, die dann entsprechend verarbeitet werden, also die daten zuweisen. Wenn es irgendwas in der nächsten vers gibt, aber in der davor noch nicht, bekommt das halt nen deaulttwert oder wird irgendwie berchnet.



  • nep schrieb:

    Mit der "Brechstange" also z.B. einfache IFs/SWITCHes geht das natürlich, aber gibts da nicht elegantere Lösungen oder irgendelche Guidelines wie man sowas am besten macht ?

    Den Code zum Laden des Dokuments einfach in eine Reader-Klasse auslagern. Dann einfach die entsprechenden Dokument/Chunk-Handler aus einer Object-Factory beziehen.



  • Auf jeden Fall ne Versionsnummer verwenden, dann kann man nämlich mit einer alten Version einfach "Wurde mit einer neueren Version erstellt" anzeigen.
    Gilt auch für setups, ich denke da an alte Spiele die einem DX9 mit DX5 überinstallieren wollen..

    Warum XML weniger geeignet ist versteh ich allerdings auch nicht, kannst du das näher eläutern rüdiger?



  • XML ist eine Sprache um Stellen in Texten zu markieren. Also um zum Beispiel zu sagen "unterstreiche diese Stelle" (zB in xhtml) oder ähnliches.

    Hat man also nicht den Fall, das man einen Text hat, in dem man Stellen markieren will, dann bringt XML einiges an Nachteilen mit. Zum Beispiel ist die Syntax schwer zu parsen und schwer zu lesen, zum anderen ist die Syntax zu redundant etc. (Wobei einige Dinge eben daher kommen, weil es zum markieren gedacht ist. Wenn ich einen Seiten Langen Text habe und von Seite 3 bis Seite 5 etwas markieren, dann ist ein </foo> am Ende schon sinnvoll, damit man weiß, was da gerade markiert wurde).

    XML wird mittlerweile auch für andere Bereiche (Konfigurations-Dateien, Internet-Protokolle etc.) verwendet. Dafür wurde es aber nicht gemacht und bringt eben enorme Nachteile mit sich. XML ist eben so ein typisches *Buzzword*. (Hey, schaut her, wir benutzen jetzt XML)

    TDL, YAML und OGDL sind für so eine Aufgabe deutlich besser geeignet.



  • TDL ist doch ne Sache die nur in Gott vorkommt und somit niemand kennt.



  • rüdiger schrieb:

    XML ist eine Sprache um Stellen in Texten zu markieren. Also um zum Beispiel zu sagen "unterstreiche diese Stelle" (zB in xhtml) oder ähnliches.

    Was soll denn das werden? XML ist eine Auszeichnungssprache, die zum Strukturieren von Daten verwendet wird. Daß man damit auch Textformatierungen beschreiben kann, ist ein eher zufälliger Nebeneffekt.



  • CStoll schrieb:

    rüdiger schrieb:

    XML ist eine Sprache um Stellen in Texten zu markieren. Also um zum Beispiel zu sagen "unterstreiche diese Stelle" (zB in xhtml) oder ähnliches.

    Was soll denn das werden? XML ist eine Auszeichnungssprache, die zum Strukturieren von Daten verwendet wird. Daß man damit auch Textformatierungen beschreiben kann, ist ein eher zufälliger Nebeneffekt.

    Texte markieren oder auszeichnen. Der Begriff ist ja im Prinzip das gleiche. Ich habe nicht gesagt, das man mit XML keine Daten strukturieren kann. Mein Punkt ist nur, das es bei allen Sachen außer Text nicht wirklich sinnvoll ist.

    Ein Konfigurationsformat in XML macht eigentlich wenig Sinn, genauso wie eine Programmiersprache oder RPC. Das man es dennoch machen kann, ist klar (und sieht man ja leider zu genüge). Es ist nur wenig sinnvoll.

    Das man mit XML Text formatieren kann, ist kein zufälliger Nebeneffekt, sondern dafür wurde SGML und XML entworfen.

    Wie ich schon sagt, allein die Weise, wie man markiert (oder auszeichnet), zeigt dies ja schon

    <u>ganz viel viel Text</u>
    

    hier ist das </u> sinnvoll, damit man auch bei langem Text einen überblick behält

    <fenster-hoehe>300</fenster-hoehe>
    

    hier ist es wenig sinnvoll

    <a href="http://www.foo.de">foo</a>
    

    Attribute sind bei der Text-Auszeichnung wichtig, da der Text eben der reine Text bleiben kann, auch wenn man alle Tags entfernt. Hier kommt eben der Sinn der Meta-Information.

    <fenster-hoehe einheit="pixel">300</fenster-hoehe>
    

    bei eine Konfigurationsdatei ist es wenig sinnvoll, da es nicht nur das parsen, sondern auch das auswerten verkompliziert.



  • Jetzt vergleichst du aber Äpfel mit Birnen - und das bringt überhaupt nichts. XHTML ist möglicherweise zur Formatierung von Texten entwickelt worden, aber das ist nur eine mögliche Anwendung von XML. XML selber wurde zur Strukturierung beliebiger Daten entworfen.

    PS: Ja, nicht alles sollte in XML geschrieben werden - aber der OP hat ja auch keine Angaben darüber gemacht, was für Daten(formate) er verwalten will. Also warte lieber mit deinen Hasstiraden gegen XML.



  • Der Vorteil von XML gegenüber vieler propietärer Datenbeschreibungssprachen ist halt, dass man die Daten hierarchisch strukturieren kann. Bei kleinen billigen Konfig-Dateien mag das sicherlich nicht nötig sein, aber bei komplexen Datenformaten ist das schon sinnvoll. Und da hat XML eben seine Vorteile. Die Dateien werden neben den reinen Nutzdaten zwar durch die Tags etwas aufgebläht, aber dafür gibt es haufenweise Libs und Frameworks, Parser und Tools, so dass man das Rad nicht neu erfinden muss. Man kann bei Bedarf eventbasiert nur relevante Teile des XML-Dokuments einlesen (SAX) oder gar das ganze Dokument als Baum in den Speicher laden (DOM). Man kann mit DTD oder XML-Schema die Grammatik einer XML-Struktur beschreiben, was sehr hilfreich ist, wenn man Daten zwischen verschiedenen Anwendungen austauschen will, indem man vor dem Parsen automatisiert prüfen kann, ob das Dokument auch valide ist. Oder man transformiert mittels XSLT/XPath zwischen verschiedenen Formaten oder erzeugt sich eine HTML-Repräsentation der XML-Daten, um sie sich im Browser anzugucken.

    Darüber hinaus wird XML jedoch heute echt häufig für Dinge mißbraucht, die über die reine Datenbeschreibung hinausgehen. Das scheint wohl echt dem XML-Hipe zuzuschreiben zu sein.



  • CStoll schrieb:

    Jetzt vergleichst du aber Äpfel mit Birnen - und das bringt überhaupt nichts. XHTML ist möglicherweise zur Formatierung von Texten entwickelt worden, aber das ist nur eine mögliche Anwendung von XML. XML selber wurde zur Strukturierung beliebiger Daten entworfen.

    Nö, das XML für andere Zwecke missbraucht wird, war nicht geplant

    http://www.w3.org/XML/ schrieb:

    Extensible Markup Language (XML) is a simple, very flexible text format derived from SGML (ISO 8879). Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an increasingly important role in the exchange of a wide variety of data on the Web and elsewhere.

    CStoll schrieb:

    PS: Ja, nicht alles sollte in XML geschrieben werden - aber der OP hat ja auch keine Angaben darüber gemacht, was für Daten(formate) er verwalten will. Also warte lieber mit deinen Hasstiraden gegen XML.

    Was für Hasstiraden? Ich sage doch nur, dass es für Zwecke außer der Textauszeichnung nicht gut geeignet ist. Das ist für mich weder dogmatisch, noch eine Religion. Das ist eine rein technische (sachliche) Entscheidung. Ich habe auch keine Angst davor mit XML umzugehen. Ich habe schon diverse Software in diversen Programmiersprachen geschrieben, die XML benutzt hat. Das letzte war zum Beispiel eine Abfrage-Sprache für XML in Common Lisp (ähnlich wie XPath).

    Außerdem habe ich damit gewartet, bis hier mehrere Leute danach gefragt haben.


Anmelden zum Antworten