Bapf: Kann man mit XSL eine XML aufrufen?

Ich öffne eine Datei "daten.xml" mit folgendem Quellcode:

<?xml version="1.0" encoding="ISO-8859-1"?>

<?xml-stylesheet type="text/xsl" href="htmldesign.xsl"?>

<autoren>
    <autor>
    <name>Kurt Kurzr</name>
    <geschlecht>mann</geschlecht>
    <email>ion@schnek.net</email>
    </autor>

<autor>
    <name>Maggi May</name>
    <geschlecht>frau</geschlecht>
    <email>mm@expa.net</email>
    </autor>

</autoren>

Durch die Datei "htmldesign.xsl" wird dann das Layout auf die Daten abgebildet.

Ist es auch möglich ein Layout zu öffnen, welches dann die XML-Daten aus der XML Datei holt?
Das Ziel wäre, mit XSL Abfragebedingungen die XML-Daten zu filtern, also z. B. nur mit Geschlecht "frau" die Daten auszulesen in dem einen Layout, auf einem anderen Layout (XSL-File) nur Datensätze mit Geschlecht "mann".

Es soll keine XML-Dateninsel sein, da es für IE und Mozialla Browser kompatibel sein muss und es kann kein Webserver verwendet werden.

  1. Hallo,

    Ist es auch möglich ein Layout zu öffnen, welches dann die XML-Daten aus der XML Datei holt?

    Es gibt in XPath document() und document-available() - sprich sowas wie <xsl:variable name="meindok" select="document('http://example.org/foo.xml')" /> und dann ein <xsl:value-of select="$meindok//ElementName" /> ist möglich.

    Das Ziel wäre, mit XSL Abfragebedingungen die XML-Daten zu filtern, also z. B. nur mit Geschlecht "frau" die Daten auszulesen in dem einen Layout, auf einem anderen Layout (XSL-File) nur Datensätze mit Geschlecht "mann".

    Es soll keine XML-Dateninsel sein, da es für IE und Mozialla Browser kompatibel sein muss und es kann kein Webserver verwendet werden.

    Dann dürfte die einfachste Lösung sein, dass Du einfach 3 XML-Dateien und 2 XSL-Stylesheets erstellst:

    1. XML-Datei: Deine eigentlichen Daten. Nennen wir sie mal 'daten.xml' Dort
       KEIN XSL-Aufruf (wobei das egal wäre, der wird ignoriert)
    2. XML-Datei: Eine leere XML-Datei, die nichts anderes tut, als Deine 1. XSL
       aufzurufen
    3. XML-Datei: Eine leere XML-Datei, die nichts anderes tut, als Deine 2. XSL
       aufzurufen
    4./5.: Die Beiden XSL-DAteien

    Die XSL-Dateien hätten dann die Besonderheit, dass überall statt select="//foo" halt select="document('daten.xml')//foo" stünde oder wenn's vorher in einer Variable war halt select="$var//foo".

    Wenn Du normale XSLT-Prozessoren hättest, wäre es kein Problem, jeweils andere Stylesheets direkt auf XML-Dateien loszulassen, da Du im Browser aber XSLT nur in Verbindung mit XML-Dateien nutzen kannst (zumindest meines Wissens) ist's halt etwas umständlicher.

    Ich hoffe, Dir ist ungefähr klar, was ich meine.

    Viele Grüße,
    Christian

    1. Wenn Du normale XSLT-Prozessoren hättest, wäre es kein Problem, jeweils andere Stylesheets direkt auf XML-Dateien loszulassen, da Du im Browser aber XSLT nur in Verbindung mit XML-Dateien nutzen kannst (zumindest meines Wissens) ist's halt etwas umständlicher.

      Vielen Dank, das Einbinden mit document('file.xml') funktioniert super!

      Schade nur, dass man für die Aufrufe eine leere XML braucht, die nur die XSL aufrufen muss...