Kann man mit XSL eine XML aufrufen?
Bapf
- xsl
0 Christian Seiler0 Bapf
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.
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
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...