mehrere XML-Dateien
Ringer
- xml
Hallöchen Zusammen,
ich habe mich ein wenig mit xml beschäftigt und habe nun ein Problem. Gibt es eine Möglichkeit mehrere XML Dateien auszulesen und anzuzeigen. Vielleicht kann ich sogar wieder alle Informationen speichern (in einer grossen XML-Datei). Die XML-Dateien sind dabei vom Aufbau immer gleich und befinden sich auch am gleichen Ort.
mfg
Ringer
Hi Ringer,
Gibt es eine Möglichkeit mehrere XML Dateien auszulesen und anzuzeigen.
schreibe ein Programm, welches genau dies tut. Wo ist Dein Problem?
Viele Grüße
Michael
Vielen Dank für deine Antwort! Nur leider habe ich nicht viel Ahnung von XML. Es gelingt mir zwar mit XSL eine Datei anzuzeigen aber wie ich mehrere auslesen soll weiss ich einfach nicht! Ausserdem denke ich das es eh das beste wäre alle XML-Dateien in einer zu bündeln.
Ich habe auch schon im Netz gesucht und würde es gern selber machen aber ich habe keine Ahnung wie!!!
mfg
Ringer
Hi Ringer,
Es gelingt mir zwar mit XSL eine Datei anzuzeigen aber wie ich mehrere auslesen soll weiss ich einfach nicht!
kannst Du mal definieren, was Du Dir unter "anzeigen" vorstellst?
Falls Du implizit "in einem Browser" meinen solltest: Ein Browser stellt normalerweise ein Dokument in einem Fenster dar. Willst Du für viele Dokumente viele Fenster öffnen, oder willst Du alle Dokumente in einem Fenster darstellen (und wenn ja, dann wie? Untereinander? Nebeneinander? Durcheinander?).
Ausserdem denke ich das es eh das beste wäre alle XML-Dateien in einer zu bündeln.
Ich bezweifele, daß Dein XML-Dokumentformat in dieser Hinsicht mengenwertig genug ist.
Du kannst natürlich eine neue DTD definieren, die das leistet, und ein Konvertierungsverfahren definieren, welches die entsprechende Transformation durchführt.
Dabei müßtest Du Dir dann sehr genau überlegen, welche Semantik eine entsprechende Zusammenführung modellieren sollte (Menge? Liste? Komplexe koordinatenbasierte Abhängigkeiten?).
Ich habe auch schon im Netz gesucht und würde es gern selber machen aber ich habe keine Ahnung wie!!!
Beginne damit, eine Aufgabenstellung zu definieren. Bisher bist Du davon noch weit entfernt.
Und ohne Aufgabenstellung ist die Suche nach einer Software, die eine Aufgabe löst, die noch gar nicht definiert ist, ziemlich sinnlos.
Viele Grüße
Michael
Hallo Michael,
kannst Du mal definieren, was Du Dir unter "anzeigen" vorstellst?
Also ich will die Informationen in einem Browser darstellen! Die Daten sollen dann in einer Tabelle ausgegeben werden.
Ausserdem denke ich das es eh das beste wäre alle XML-Dateien in einer zu bündeln.
Ich bezweifele, daß Dein XML-Dokumentformat in dieser Hinsicht mengenwertig genug ist.
Da ich die Daten sortieren will und dann mit for each ausgeben will, dürfte das kein Problem sein! Ich dachte eh nur das gerade eine Sortierung in einer XML-Datei bestimmt viel einfacher ist!
Danke schonmal!
Ringer
Hi Ringer,
Also ich will die Informationen in einem Browser darstellen! Die Daten sollen dann in einer Tabelle ausgegeben werden.
XML kennt meines Wissens keine "Tabellen". Meinst Du, daß Du Deine XML-Dokumente nach HTML konvertiert darstellen lassen willst? (Browser können auch XML-Dokumente direkt darstellen!)
Ausserdem denke ich das es eh das beste wäre alle XML-Dateien in einer zu bündeln.
Ich bezweifele, daß Dein XML-Dokumentformat in dieser Hinsicht mengenwertig genug ist.
Da ich die Daten sortieren will und dann mit for each ausgeben will, dürfte das kein Problem sein!
Natürlich kannst Du ein Programm schreiben, was genau dies tut (und das war mein Tip in meinem ersten Posting - wobei ich nicht verstehe, wo Dein Problem ist).
Nur klingen Deine Aussagen so, als wolltest Du genau dies nicht tun, sondern einen bereits vorhandenen Transformations-Mechanismus benutzen. Dann wiederum wirst Du zuerst Deine existierenden XML-Dateien in eine einzige, gemeinsame XML-Datei (einer neuen DTD!) umwandeln und auf diese dann eine entsprechende Transformation (nach HTML oder was auch immer) anwenden müssen, befürchte ich.
Denn üblicherweise transformieren solche Mechanismen _eine_ XML-Datei in _eine_ HTML-Datei - und zwar nicht, um Dich zu ärgern, sondern weil bei einer Transformation mehrerer XML-Dateien in eine HTML-Dateien unendlich viele Möglichkeiten für die Art dieser Zusammenfassung existieren würden, zwischen denen Du Dich entscheiden mußt.
Und "In einer Tabelle" ist viel zu ungenau, um als Entscheidung zu dienen: Willst Du Deine XML-Dokumente als Zeilen der Tabelle verstehen? Als Spalten? Als Zellen, wobei die Tabelle selbst eine definierte Anzahl von Spalten pro Zeile aufweisen würde?
Definiere eine Aufgabenstellung. DWIM gibt es nicht als Fertiglösung.
Ich dachte eh nur das gerade eine Sortierung in einer XML-Datei bestimmt viel einfacher ist!
Das hängt davon ab, wie Du die Zusammenfassung machst (falls die Sortierung nach _einem_einzigen_ Kriterium die einzige verlangte Operation ist, kannst Du diese bereits bei der Zusammenfassung erledigen und das gemeinsame XML-Dokument bereits in 'sortierter' Form speichern).
Viele Grüße
Michael
Hallo Michael,
Also ich will die Informationen in einem Browser darstellen! Die Daten sollen dann in einer Tabelle ausgegeben werden.
Die Ausgabe erfolgt mit XSL in Form einer Tabelle.
Natürlich kannst Du ein Programm schreiben, was genau dies tut (und das war mein Tip in meinem ersten Posting - wobei ich nicht verstehe, wo Dein Problem ist).
Das Problem ich weiss nicht wie ich es machen soll. Mit php kann man z.B. eine Datei erstellen und diese mit Inhalt füllen und speichern. Das gleiche will ich für meine XML Daten machen. Vielleicht ist auch schon der Gedanke falsch. Das ich die Daten, welche auf den Server liegen mit XML aufarbeiten und abspeichern kann.
Für mich wäre es sonst völlig OK. Wenn ich genau die gleichen Informationen der vielen Dateien in einer Datei habe!
Ich muss jetzt leider weg. Vielleicht kannst du morgen früh nochmal ins Forum kommen? Oder du schreibst an a3ringer@gmx.de
Hi Ringer,
Für mich wäre es sonst völlig OK. Wenn ich genau die gleichen Informationen der vielen Dateien in einer Datei habe!
wie schon gesagt:
1. Definiere Dir eine neue DTD, welche eine Menge von XML-Dokumenten Deines bisherigen Formats aufnehmen kann. (Das ist die Haupt-Schwierigkeit Deines Vorhabens.)
2. Schreibe einen Transformator Deiner bestehenden XML-Dokumente in dieses neue Format.
3. Lasse XML-Dokumente dieses neuen Formats (!) mit XSL nach HTML umwandeln.
Viele Grüße
Michael
Hallöchen Ringer,
wie ich Deinem letztem posting entnehme hast Du PHP-Kenntnisse. Dann mach es doch bitte auch mit PHP. Den Ansatz alles nicht in DBs zu speichern nutze ich auch - und, wenn ich mir hier die vielen geschilderten Probleme mit DBs in Forum ansehe, kann ich wohl auch ganz glücklich sein, es so zu machen.
Lösungen:
Dennoch ist es exakt der Weg, den Dir Michael schon mehrfach aufgezeigt hat: SCHREIBE EIN PROGRAMM!
1. Möglichkeit
=======================
Szenario: Du nimmst erstmal Dein wissen über xml und vergißt es (Grundvoraussetzung dieser Möglichkeit!) und erzeugst (im eingentlichen Sinne KEINE) XML-Datein, die Du weder deklariest, noch gültig machst und bitte auch nicht wohlgeformt gestaltest. Mit anderen Worten Du schaffst Dir Schablonen (templates).
Beispiel einer solchen:
_______________________
<tr><td>Autor<td>Max Frisch
<tr><td>Bücher<td>.....
<tr>......
_______________________
mehr nicht!
Aufrufendes Script:
_______________________
~html-header und restlicher Seitenanfang
<?php
include("0001.xml");
include("0002.xml");
....
?>
~restliches Seitenende
=======================
2. Möglichkeit
3. Möglichkeit
=======================
Du arbeitest mit ENTITIES als Deklaration für Elemente
http://selfhtml.teamone.de/xml/dtd/entities.htm
Etwas kompizierteres gibt es aber wirklich nicht, als sich dort durchzufuchsen!!!!!!
=======================
4. Möglichkeit
=======================
Du speicherst Deine Daten nicht in Dateien, sondern nur in einer Includedatei z. B. Archiv.inc ab (System, wie 2.).
Die Datensätze speicherst Du dabei in einem Array ab. Sind sie komplex, dann nimm ein polydimensionales Array. Include die Datei und arbeite das ganze am besten mit array_walk() durch (mein Favorit einer Lösung)
=======================
5. Möglichkeit
=======================
Benutze ein DB-System (viel Spaß ;)
=======================
6. Möglichkeit
=======================
Schreibe mit PHP eine html-Dokument koninuierlich weiter (wie 4.).
Gruß aus Berlin!
eddi
Hallo,
Gibt es eine Möglichkeit mehrere XML Dateien auszulesen und anzuzeigen. Vielleicht kann ich sogar wieder alle Informationen speichern (in einer grossen XML-Datei).
Es gibt mehrere Möglichkeiten und ein Programm dafür zu schreiben muss du auch nicht.
Dann schreibst eine XML-Datei dafür etwa so:
----------------------
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!DOCTYPE dateisammlung SYSTEM "dateien.dtd">
<dateisammlung>
&xmldatei1;
&xmldatei2;
etc.
</dateisammlung>
----------------------
Wenn du diese XML-Dateie nun aufrufst, löst dir der XML-Parser die Entities auf, d.h. er fügt dir die anderen XML-Dateien ein.
Damit hast du eine große XML-Datei die alle anderen enthält und du kannst dann diese weiterverarbeiten (mit XSLT)
Mit <xsl:apply-templates select="document(@url)" /> hast du dann zugriff auf den Wurzelknoten eines jeden extenen XML-Datei, jetzt muss du nur die Templatest für eine diese Dateien erstellen (nach dem alle gleich aufgebaut sind (hst du gesagt) und fertig.
2b) du kannst mit der dockument() Funktion auch direkt auf die einzelen Dateien zugreifen
<xsl:value-of select="document('datei1.xml')/documentelement/element[@attribut]" />
http://selfhtml.teamone.de/xml/index.htm
Grüße
Thomas