PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XML: Das Format der Zukunft?



Jesus_666
18.06.2004, 18:51
Ich arbeite gerade an einem kleinen Auftragsprogramm, dessen GUI unglücklicherweise vom User on-the-fly angepaßt werden muß. Ich löse das so, daß das Programm eine XML-Datei parst, in der das Layout festgelegt ist und daraus dann das GUI baut. Und wo ich schon eine XML-Bibliothek einbinde kann das App ja auch gleich die Datenspeicherung in XML abwickeln.
Das spart mir die Arbeit, ein eigenes einfach zu editierendes Datenformat samt passendem Parser zu entwickeln; XML-Parser gibt's bei SourceForge genug.

Für mich ist XML ein tolles Format: Man kann alles mögliche in XML ausdrücken (von Webseiten über Vektorgrafik bis hin zu sämtlichen Daten eines Videospiels), man kann es mit jedem normalen Texteditor bearbeiten und es leidet nicht an Problemen wie abweichender Endigkeit, was es sehr portabel macht. Es ist standardisiert; wenn man XML benutzt muß man nicht selbst ein Format entwerfen und einen Parser dafür schreiben.

Die frage, die sich mir stellt ist jetzt folgende: Was denkt ihr über XML? Benutzt ihr es in euren Projekten? Was spricht eurer Meinung nach für und gegen den Einsatz von XML in einem Programm?

Freezy
18.06.2004, 19:03
XML ist eine gute sache und drängt sich immer mehr in den Fordergrund, wie sich beobachten lässt. Vieleicht lässt es sich für Onsetsu dann auch verwenden ;) Ich selbst hab mich bisher nicht sonderlich damit befasst aber von dem was ich da alles höre muss es schon vorteilhaft sein. Wenn hier mal wieder ruhe einkehrt werde ich mir das aber mal genauer ansehen - interresant ist es schon :)

An dieser stelle möchte ich gern eine Schweigeminute einwerfen für den jungen Mann der hier auch aus Krumbach kahm, das XML Format mitentwickelt hat und letzte woche bei einem tödlichen Autounfall ums leben kahm. *schweig*

MuadDib
19.06.2004, 15:49
Japp, XML ist schon klasse... vor allem im Webbereich wohl nicht mehr wegzudenken... der Einsatz der X-Technologien im Web mit XSLT, XML-FO, XPath, XQuery, ... ist wohl der einzig sinnvolle und auch mächtigste Zugang, Design und Inhalt voneinander zu trennen. Meine Lebensgefährtin ist sowas wie eine Expertin auf dem Gebiet, und was ich bei Ihrem Bakkalaureatsprojekt bislang gesehen hab ist wirklich klasse :)

Auch andere Bereiche bauen mittlerweile schon auf XML... XJ Technologies (http://www.xjtek.com/) verwendet für ihr Anylogic (einem Programm zur diskreten und kontinuierlichen Simulation) das XML-Format als Datenformat. Vom Aufbau her ist Anylogic sowieso genial: Baut auf Java auf, sprich man kann fertigen Bausteinen noch zusätzlich jede Funktionalität geben, die man möchte, und bekommt auch bei großen Projekten lediglich kleine Dateien, die sämtliche, auf das wesentliche reduzierte Beschreibungen des Projektes enthält.

Prominentere Beispiele sind wohl XUL, eine User Interface Beschreibungssprache, die auch für Mozilla eingesetzt wird.

Toll finde ich auch, dass XML von einigen Java APIs sehr gut unterstützt wird, und durch genormte Schnittstellen das schreiben eigener Parser doch um einiges erleichtert... es lebe Objektorientiertes Programmieren :D

Wie auch immer, bei all den Vorteilen darf man nie vergessen, wie ungemein komplex und undurchsichtig XML-Dateien werden können. Man nehme als absolutes Negativ-Beispiel die XML Dateien von M$ Word her, die ja im Grunde bis auf unwichtigen Mist wie Ersteller, ... (wohl nur, um noch leichter auszuspionieren) nur den Binary-Code der alten Word-Dateien enthalten...

von SVG bin ich auch nicht unbedingt begeistert... zwar klasse, was man damit machen kann, aber ohne Editor, der einem die Werte errechnet, unmöglich from-scratch eigene Dinge zu erstellen..., man soll also den XML-Hype nicht zu überbewerten.

Ineluki
19.06.2004, 16:28
Also fuer mich ist XML nur ein Schlagwort, wovon ich nicht mal genau weiss, was es bedeutet .. habt ihr mal noch ein paar mehr informationen, wie xml aufgebaut ist, und was es mir bringt ? .. natuerlich haett ich auch googlen koennen, aber ich wollt nicht erst hunderte seiten lesen, sondern nur ein kurzes und knappes statement/zusammenfasstung

MuadDib
19.06.2004, 16:34
bitte :) (http://www.boku.ac.at/htmleinf/xmlkurz.html)

Dingsi
19.06.2004, 17:13
Original geschrieben von MuadDib
von SVG bin ich auch nicht unbedingt begeistert... zwar klasse, was man damit machen kann, aber ohne Editor, der einem die Werte errechnet, unmöglich from-scratch eigene Dinge zu erstellen..., man soll also den XML-Hype nicht zu überbewerten.
Gerade SVG gefällt mir recht gut. o_o Schade bloß, dass es afaik noch keinen voll-funktionsfähigen und stabilen Browser-Build bzw. ein gutes Plugin gibt. Der Adobe SVG Viewer missfällt ehrlich gesagt irgendwie. O_o° Mh.. da gabs doch auch noch ein Mozilla-SVG Release, aber der war auch noch nicht ganz fertig.. oder? ô-o

Außerdem gibt es, denke ich, SVG-Edtioren. Jedenfalls hab ich mal irgendwas über etwas in die Richtung gelesen...
Mh.. achso, du meinst garnicht, dass es keine Editoren gäbe, sondern, dass man obwohl es XML ist auf Editoren angewiesen ist. :(

Ansonsten finde ich XML persönlich auch äußerst schick. ^.~
Ich hab mir irgendwann mal ein einfaches Quiz-Format erwerkelt, da ich vorhatte eine kleine Quiz/Question-Datenbank zu schreibseln (Nur der Code, die Fragen stellt wer anders ^_~). Dazu gabs bzw. sollte es auch ein mIRC-Script und ein WebInterface geben.. was ist da bloß draus geworden. o-O

Jedenfalls hats mir sehr gefallen:
<quiz>
<question-block>
<question>Dudu?</question>
<answer>Ding!</answer>
</question-block>
</quiz> :D

*ein ansonsten unerfahrenes kleines dingsi*

Jesus_666
19.06.2004, 21:01
Original geschrieben von Dingsi
Außerdem gibt es, denke ich, SVG-Edtioren. Jedenfalls hab ich mal irgendwas über etwas in die Richtung gelesen...
Das GIMP kann mit SVG umgehen und KDE-Icons werden offenbar gerne als SVG entworfen und erst zum Release als PNGs gespeichert.


BTW, man sollte Jabber (http://www.jabber.org/) nicht vergessen, ein XML-basiertes IM-Netzwerk.


BTW2, was ich noch gar nicht erwähnt habe, ich benutze XML sogar zum kreativen Schreiben... Genauer gesagt, für mein Schreibprojekt. Zuerst habe ich alles in HTML geschrieben, das sah in etwa so aus:
[Vor dem Haus]
<b>Klaus:</b> Peter, du stinkst.
<i>Peter erwürgt Klaus</i>Das mußte ich dann nachträglich mit <br>s dekorieren und per WYSIWYG-Editor in eine Tabelle kopieren, wobei ich für bestimmte Zeilen auch noch die Formatierung ändern mußte. Lästig.
Jetzt schreibe ich das ganze als pseudo-XML:
<scene="Vor dem Haus">
<sp="Klaus">Peter, du stinkst.</sp>
<evt>Peter erwürgt Klaus</evt>
</scene>Das ist zwar mehr Schreibarbeit, dafür muß ich hinterher nur den Text durch zwei PHP-Skripte laufen lassen (eins um es in korrektes XML umzuformen und eins um eine fertig formatierte HTML-Seite draus zu bauen) und fertig. Spart irrsinnig viel Zeit.

Es leben die Regexps! ^__^

Ineluki
05.07.2004, 01:57
ich hab mich jetzt auch mal ein wenig mit XML befasst und ein kleines Buch zur Version 1.0 gelesen .. weil ich das vielleicht fuer ein Studienproject zur Simulation von Molekularbewegungen brauche ..

Irgendwie hab ich aber sowas ein einen include befehl vermisst, sprich einen befehl, der mir erlaubt, anstelle eines ... Tags eine komplette xml datei einzubinden, die ebend als oberstes Element ein [xyz] Tag hat.

Sowas brauchte ich aber unbedingt, da, wenn ich mal ein Molekuel aus Einzelatomen zusammengesetzt habe, ich das ja auch in meheren Simulationen verwenden will, und nicht immer copy'n'paste machen will, falls ich an dem Molekuel doch mal was rumschraube.

Ausserdem vermisse ich sowas wie Zahlendytentypen. Man kann ueber NMTOKEN zwar die eingabe auf Alphanumerische Zeichen einschraenken, aber ich hab nix dazu gefunden, dass irgendwo nur Zahlen akzeptiert werden koennen.

Habt ihr ausserdem ein paar links zu guten XML Parsern fuer C++, mit denen ihr gute erfahrungen gemacht hat, was portierbarkeit und Einfachheit der Nutzung angeht ? Wenn wuerde mich wahrscheinlich ein DOM mehr interressieren, als ein SAX, da mir das ja anscheinend gleich die richtige Struktur im Speicher aufbaut.

Hoffe, ihr koennt mir helfen. Zur not beschreibe ich mein Projekt auch etwas genauer, dann wirds aber recht physikochemisch.

Gruss Ineluki

Feenstaub
05.07.2004, 05:38
Hallo, ihr lieben Programmierer ;) *winkt mal wieder ins Forum*

Grosser Keypatch-Guru Ineluki *verneig'* - vielleicht darf ich dir mal ganz kurz meine bescheidenen Kenntnisse zu Gehör bringen.

Bezüglich Includes: Also das Schöne an XML ist ja (oder besser: soll ja sein), dass es easy einsetzbar, leicht verständlich und knapp in den Regeln sein soll. Wenn du mit Einfügungen bzw. Modulen arbeiten willst, dann mach es doch einfach *grinst*. Du kannst was definieren wie <include name="my.xml"/>. Und dann benutzt du den DOM zum Parsen und bei solchen Nodes liest du dann das Dokument ein und fügst es an eben jener Stelle hinzu. Wie gesagt... XML lässt dir da alle Freiheiten.

Bezüglich Datentypen: *Hust* Ups, erwischt... da bin ich auch nicht so firm. Aber _wenn_ ich genaue Typen benötige, arbeite ich mit XML-Schemas... nur mal so als reingeworfener Hinweis ;)

Bezüglich Parsern: Tja, ich kann dir ja mal meine Erfahrungen schildern. Also erstmal ist das Verhältnis von SAX zu DOM wie Porsche zu Fahrad - sprich der SAX wird eigentlich immer dann verwendet, wenn es um Schnelligkeit und daher meist um grosse Datenmengen geht. Im Homebereich wird gerne das TinyXML von Sourceforge genommen. Simpler, sauberer Code, leicht anpassbar und das notwendigste dabei.

Hoffe, ich habe die Meistercoder nicht gelangweilt... bis zum nächstenmal bei euch Coding-Genies...

Küsschen, Feenstaub.

Ineluki
05.07.2004, 06:31
wenn ich mir aber selber ein include bastel, dann erkent der parser aber leider nicht, ob das ganze fehlerfrei ist, oder nicht ...

zudem haette ich gern ueberall die option statt einem Tag eine eigene datei anzugeben ...

Wuerde ich mir jedoch nicht ein <include> basteln, sondern einen praeprozessor alla #include, wuerde mir das auch nix bringen, denn dann duerften die include dateien selber nicht dem xml standard entsprechen, weil der <?xml ...> Tag nicht drin stehen duerfte -__-

was sax und dom angeht, so ist das im prinzip schon klar ... na ja .. muss man einfach mal ausprobieren, womit man am besten klarkommt ... bei dom klang es aber nur so gut, das er auch gleich selber speicheralloziiert usw usw

Gruss Ineluki

Ineluki
06.07.2004, 18:25
hm .. ich hab mich mal beim www.w3.org umgesehen, und glaube was gefunden, was meinem Problem entspricht ... bin bir aber nicht ganz sicher ... -> http://www.w3.org/TR/xinclude/

Zumindest die Beispiele ganz am ende machen mir Hoffnung ...

Nur wie wissen die Parser denn bescheid ueber die Namespaces, wenn sie grad mal keine verbindung zum Internet haben ? ... schliesslich wird als namespace ja <document xmlns:xi="http://www.w3.org/2001/XInclude"> angegeben O_o ... irgendwie hab ich das Prinzip immer noch nicht ganz verstanden ...

Und kann man auch mehere DTDs in ein xml Dokument integrieren, weil es ja sein kann, dass man Tags aus unterschiedlihen DTDs benoetigt ...

Irgendwie bin ich recht verwirrt ...

Machen wir mal ein Beispiel ....
Ich habe eine Hirarchische Struktur, die ich mit XML nachbauen moechte. Ich habe ein System was ich simulieren will. Dieses System besteht aus einer beliebigen Anzahl (mindestens eins) von Molekuelen, und diese wiederum aus einer beliebigen Anzahl (mindestens eins) Atome. Sowohl das System, als auch Molekuele und Atome haben noch ein paar Untereigenschaften wie z.B. Bindungslaengen, Bindungswinkel, Element usw.

Nun kann ich ja wie gehabt eine grosse DTD schreiben, die mir sowohl System, Molekuel als auch Atom befiniert, und die ganze Simulationsdatei in einem schreiben.


<simulation>
<molekuel name="Schwefelhexafluorid">
<atom id="S1" x="0.0" y="0.0" z="0.0" element="S" />
<atom id="F1" x="1.0" y="0.0" z="0.0" element="F" />
<atom id="F2" x="0.0" y="1.0" z="0.0" element="F" />
<atom id="F3" x="0.0" y="0.0" z="1.0" element="F" />
<atom id="F4" x="-1.0" y="0.0" z="0.0" element="F" />
<atom id="F5" x="0.0" y="-1.0" z="0.0" element="F" />
<atom id="F6" x="0.0" y="0.0" z="-1.0" element="F" />
<stretchforce atom1="S1" atom2="F1" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F2" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F3" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F4" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F5" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F6" param1="1" param2="0.5" />
<bendforce atom1="F3" atom2="S1" atom3="F1" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F2" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F4" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F5" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F6" w="180.0" force="0.73" />
</molekuel>
<molekuel name="Wasser">
<atom id="O1" x="0" y="0" z="0" element="O" />
<atom id="H1" x="0.72" y="0.53" z="0" element="H" />
<atom id="H2" x="-0.72" y="0.53" z="0" element="H" />
<stretchforce atom1="O1" atom2="H1" param1="0.4" param2="0.9" />
<stretchforce atom1="O1" atom2="H2" param1="0.4" param2="0.9" />
<bendforce atom1="H1" atom2="O1" atom3="H2" w="120.0" force="0.5" />
</molekuel>
<addmolekuel name="Schwefelhexafluorid" num="700" position"random" />
<addmolekuel name="Wasser" num="700" position="random" />
<options time="2.5" coulomb="yes" const_geometry="no" />
</simulation>


Wie man leicht sieht, waere es sowohl sinnvoll, die Molekuele direkt angeben zu koennen, als auch sie in einem extra xml dokument abzulegen, um sie bei anderen Berechnungen wiederverwenden zu koennen, und sie einfach nur einzubinden. Gleichzeitig soll aber in der DTD von simulation drin stehen, dass nur Elemente des typs molekuel eingebunden werden koennen, und mindestens eins vorhanden ist, weshalb der Parser ja die include-dateien auch ueberpruefen muss.

Es wuerde also Sinn machen, fuer molekuel eine eigene DTD zu schreiben, und in der DTD von Simulation sich auf die DTD von molekuel beziehen zu koennen ... ist sowas moeglich ? Da in der xml datei von molekuel ja der <molekuel> Tag der oberste Tag ist, muesste man doch statt einem echten <molekuel> Tag auch eine xml datei einbinden koennen, die einen einzelnen <molekuel> Tag enthaellt, oder ?

Sinn ist es also, die xml datei auf das wesentliche zu verkleinern und zu modularisieren, so dass sie im Prinzip dann so aussieht ...



<simulation>
<xi:include href="schwefelhexafluorid.xml"/>
<xi:include href="wasser.xml"/>
<addmolekuel name="Schwefelhexafluorid" num="700" position"random" />
<addmolekuel name="Wasser" num="700" position="random" />
<options time="2.5" coulomb="yes" const_geometry="no" />
</simulation>


Ich hoffe, das war einigermassen verstaendlich, was ich meine und fragen wollte ...

Gruss Ineluki

Jesus_666
06.07.2004, 22:03
Original geschrieben von Ineluki
Habt ihr ausserdem ein paar links zu guten XML Parsern fuer C++, mit denen ihr gute erfahrungen gemacht hat, was portierbarkeit und Einfachheit der Nutzung angeht ? Wenn wuerde mich wahrscheinlich ein DOM mehr interressieren, als ein SAX, da mir das ja anscheinend gleich die richtige Struktur im Speicher aufbaut.
TinyXML (http://www.grinninglizard.com/tinyxml/index.html) ist nicht schlecht... Lädt eine XML-Datei in eine reihe von Objekten, mit denen du dann arbeitest; kann auch aus Objekten eine XML-Datei erstellen. TinyXML benutzt ein DOM, ist schnell und klein und dank der zlib-Lizenz auch in Closed Source-Anwendungen verwendbar.
Allerdings bietet es keinen Support für DTDs und XSLs.

expat (http://sourceforge.net/projects/expat/) kann wesentlich mehr als TinyXML, ist aber auch wesentlich komplizierter. MIT-Lizenz, ähnlich freizügig wie die von zlib.


Ich habe keine Ahnung, ob und wie das xi-Namespace ohne Verbundung zum W3C-Server funktioniert. Das wäre eine gute Frage für eine Mailinglist.

BTW, wir brauchen hier ein Äquivalent zum <tt>-Tag. Ernsthaft.


PS: Ich habe beim Stöbern im Netz gehört, daß libxml2 (http://www.xmlsoft.org/) Support für SAX, DOM, XPath, XInclude und mehr bieten soll. Das Teil soll aber schwer zu verstehen sein. Kein Wunder bei über 1.200 öffentlichen Funktionen. MIT-Lizenz.
xmlwrapp (http://pmade.org/software/xmlwrapp/) soll dazu ein einfacheres Interface bieten. Relativ permittive Lizenz, keine Angabe auf der HP, ob XInclude unterstützt wird.

Feenstaub
06.07.2004, 22:08
*meldet sich ganz doll heftig* Darf ich, darf ich... biiitte... ICH möchte es dem grossen Ineluki zeigen, ja? *tut geschäftig* Schau nur... hier musst du... und dann dort. Und nu guck, dann machst du das hier. Und zum Testen musst du... *zwinkert noch mal lieblich*

1) Zwei Dateien anlegen:

- Schwefelhexafluorid.xml

<molekuel name="Schwefelhexafluorid">
<atom id="S1" x="0.0" y="0.0" z="0.0" element="S" />
<atom id="F1" x="1.0" y="0.0" z="0.0" element="F" />
<atom id="F2" x="0.0" y="1.0" z="0.0" element="F" />
<atom id="F3" x="0.0" y="0.0" z="1.0" element="F" />
<atom id="F4" x="-1.0" y="0.0" z="0.0" element="F" />
<atom id="F5" x="0.0" y="-1.0" z="0.0" element="F" />
<atom id="F6" x="0.0" y="0.0" z="-1.0" element="F" />
<stretchforce atom1="S1" atom2="F1" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F2" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F3" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F4" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F5" param1="1" param2="0.5" />
<stretchforce atom1="S1" atom2="F6" param1="1" param2="0.5" />
<bendforce atom1="F3" atom2="S1" atom3="F1" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F2" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F4" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F5" w="90.0" force="0.73" />
<bendforce atom1="F3" atom2="S1" atom3="F6" w="180.0" force="0.73" />
</molekuel>
- Wasser.xml

<molekuel name="Wasser">
<atom id="O1" x="0" y="0" z="0" element="O" />
<atom id="H1" x="0.72" y="0.53" z="0" element="H" />
<atom id="H2" x="-0.72" y="0.53" z="0" element="H" />
<stretchforce atom1="O1" atom2="H1" param1="0.4" param2="0.9" />
<stretchforce atom1="O1" atom2="H2" param1="0.4" param2="0.9" />
<bendforce atom1="H1" atom2="O1" atom3="H2" w="120.0" force="0.5" />
</molekuel>
2) Dateien ablegen

Dieser Schritt ist nicht unbedingt nötig, vereinfacht aber die Verwaltung und vor allem die Testung.
In unserem Fall legen wir einen Ordner "molekuele" an. Dort packen wir die beiden eben erstellten Dateien hinein.

3) Die Hauptdatei erstellen

Nun ja, darum geht es dir ja eigentlich, nicht wahr? ;) Nenne sie, wie du willst und pack' sie in den Ordner, in dem auch der "molekuele"-Ordner liegt.

- <BenenneMich>.xml

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY Schwefelhexafluorid SYSTEM "molekuele/Schwefelhexafluorid.xml">
<!ENTITY Wasser SYSTEM "molekuele/Wasser.xml">
]>
<simulation>
&Schwefelhexafluorid;
&Wasser;
<addmolekuel name="Schwefelhexafluorid" num="700" position="random" />
<addmolekuel name="Wasser" num="700" position="random" />
<options time="2.5" coulomb="yes" const_geometry="no" />
</simulation>
Wie du sehen kannst, ist es eigentlich ganz simple. Wichtig ist folgendes: die ENTITIES mit <!DOCTYPE foo [...]> zu umschliessen, weil du es sonst nur in einer DTD benutzen kannst. Das ENTITY selber ist hier ein sog. externes Entity. Mögliche Angaben sind relativer oder absoluter Pfad. Referenziert wird das jeweilige Include im xml-file durch &EntityName;.
Das war es auch schon. Alles andere findest du sicher selber raus. Achso, noch was zum Testen. Einfach Doppelklick auf die XML-Datei und dein zugeordneter Browser öffnet sich. Das Schöne an der ganzen Sache: Die Includes werden auch geparst UND überprüft. Schick, nicht wahr. Benenn' doch zum Test einfach mal den "molekuele"-Ordner um... siehst du!

*kichert noch mal freundlich und winkt* Tschöhö.

Küsschen, Feenstaub.

Ineluki
06.07.2004, 22:53
Das Problem ist aber bei der Entityloesung, dass die Molekueldateien dann ebend keine echten XML dateien sind, weil ihnen der XML Header fehlt, und auch die angabe ihrer Doctype. Zudem ist die Syntax mit &xyz; etwas umstaendlich ...

An Entitys hatte ich ja sogar schon gedacht, aber darauf wieder verworfen, weil es einfach gaenzlich Unsauber waere.
Jedes Modul soll eine selbststaendige XML datei sein, die sich unter umstaenden auch selbststaendig parsen laesst, und die ueber eine eigene DTD sauber definiert ist.

Nach der vorgeschlagenen Loesung koennte ich ja sonst einfach selber einen Preprozessor rueberlaufen lassen, und jedes "#include abs.xml" einfach einfach durch den entsprechenden Inhalt Ersetzen und dann ins Sax oder DOM einspeisen.

Feenstaub
06.07.2004, 23:45
Original geschrieben von Ineluki
... Problem bei der Entityloesung ... keine echten XML dateien ... Syntax mit &xyz; etwas umstaendlich ... gaenzlich Unsauber ...
<Forenmember name="Feenstaub" nickname="§dudepp" kenntnisse="§doof" />

Oooh, ich hatte so sehr gehofft, dich zu beeindrucken... und nun bin ich doch zu nichts nütze. :o Jetzt habe ich mich aber mit meinem langen und siegesgewissen Post voll in die Nesseln gesetzt. :rolleyes: Nun ja, Kopf hoch und durch, hat mein Vater immer gesagt. Und wenn ich ganz ehrlich bin, lieber Ineluki... ich bin nicht so ganz deiner Meinung. *guckt ganz lieb*

Weisst du, ich habe immer Angst vor Überstrukturiertheit. Und wenn du jetzt wirklich für jedes deiner xml-files eine DTD machen willst... wird das ganz schön heftig. Und ausserdem ist es dann für immer festgeschrieben! Wenn du die DTD änderst, musst du bei neuen "required" elementen/attributen ALLE abhängigen xml-dateien neu schreiben. Ja, sicher hast du recht, du kannst sie auch optional einfügen... aber dann beginnt ja da schon die Unsauberkeit, oder? Also ich persönlich habe mit xml gute Erfahrungen gemacht, aber die Schemas haben mich eher gebremst, denn gefördert.

Nehmen wir mal an, ich habe vor, ein eigenes RPG-Spiel zu machen. Ich verwende für den Charakter die Attribute Stärke und Geschicklichkeit. Abgespeichert wird der Charakter in einer XML-Datei. Für die nächste Version füge ich das Attribute Weisheit hinzu. Was nun tun? Entweder die DTD anpassen - als ein optionales Attribut? Oder einfach nur beim Einlesen einen Defaultwert vergeben, wenn das Attribut noch nicht in der Save-Datei ist? Ist doch im Grunde egal, oder? Und wenn das Attribut value für Stärke nun "karamel" heisst anstatt "8"? Dann kann ich es nicht einlesen! Dabei ist es egal, ob es nun beim Parsen einen Fehler gibt, oder kein Integerwert gelesen werden kann. Nicht anders verhält es sich mit den Includes.

*atmet schwer* Wow, was für 'ne schwere Geburt.... nicht böse sein, Ineluki... ich vergöttere dein Talent für RPG-Maker-Patches, aber hier habe ich einfach andere Erfahrungen in der Praxis gemacht.

*winkt noch mal allen Freaks ganz lieb* http://www.multimediaxis.de/images/smilies/old/s_065.gif http://www.multimediaxis.de/images/smilies/old/s_065.gif http://www.multimediaxis.de/images/smilies/old/s_065.gif
Vielleicht schaue ich ja wieder mal vorbei, wenn ich mehr auf dem Kasten habe und vor allem auch wirklich nützlich bin... ;)

Küsschen, Feenstaub.

p.s. Ich werde dann mal lieber im Zeldaforum weiterschreiben... vielleicht liegt mir ja das literarische Denken mehr als das logische *grient über beide Wangen*

Jesus_666
07.07.2004, 00:11
Ich persönlich würde vermutlich das Format für die zu verwendenden XML-Dateien in weiteren XML-Dateien festlegen und einen zweistufigen Parser bauen (zuerst Datenerfassung per TiXML, dann die Daten überprüfen und in die später zu verwendenden Variablen packen). Das würde zwar den Code etwas größer und das anfängliche Parsen aufwendiger machen, aber auch eine flexible Handhabung der eingegebenen Daten erlauben, bei der ich über alles die Kontrolle behalte - bis hin zu der Frage, was mit fehlerhaft eingegebenen Daten gemacht werden soll.

Ansonsten dürfte wohl der Einsatz von Schemas und einem high-end-Parser wie libxml2 unumgänglich sein, diesen Weg wird Ineluki wohl auch gehen (wir haben uns da schon per ICQ drüber ausgesprochen).

Ineluki
07.07.2004, 07:04
Danke fuer euere Hilfe ... ich werd mich wohl mal tiefer in Schematas und libxml2 einarbeiten ...

@Feenstaub ... nun ja ... das Problem ist, das Programm ist von Wissenschaftlern fuer Wissenschaftler .... und da muss das alles ganz sauber definiert sein

Man kann sich einfach nicht leisten, bei einer Rechnung, an der er vielleicht 2 Wochen oder laenger rechnen wird, nur Quatsch raus zu bekommen, weil einer "Karamel" oder "1e45" statt "1345" eingegeben hat, und es der Parser nicht gemerkt hat oder Standardwerte angenommen hat.

Jesus_666
07.07.2004, 22:15
Kleine Haarspalterei am Rande: Offenbar ist die Mehrzahl vom XML-Schema "Schemas", obwohl eigentlich "Schemata" logischer wäre...