Thomas J.S.: mehrere XML-Dateien

Beitrag lesen

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.

  1. Mit Hilfe von external parsed entities
    Du Definiert in (d)einer DTD für jede XML-Datei eine Entity:
    <!ENTITY xmldatei1 SYSTEM "datei1.xml">
    usw.

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)

  1. Mit Hilfe von XSLT und der document() Funktion
     2a) du kannst eine XML-Datei schreiben in der du referenzen auf die andere Dateien erstellst, etwa so:
    ----------------------
    <?xml version="1.0" encoding="iso-8859-1">
    <dateisammlung>
     <datei url="datei1.xml" />
     <datei url="datei2.xml" />
      etc.
    </dateisammlung>
    ----------------------
    Dann kannst du diese XML-Date mit einem XSL-Stylesheet verknüfen und weiterverarbeiten z.b. so:
    <xsl:template match="dateisammlung">
     <xsl:for-each select="datei">
      <xsl:apply-templates select="document(@url)" />
     </xsl:for-each>
    </xsl:template>

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