Parameter in xsl:include href verwenden
Marko
- xsl
Hallo,
ich möchte verschiedene XSL Dateien kombinieren. Die Pfade sind variabel, und sollen als Parameter von außen geliefert werden. Ich habe als Basispfad den Parameter $xslbasepath definiert, und möchte diesen nun in einem xsl:include verwenden. Probiert habe ich es so:
xsl:include
<xsl:attribute name="href">
<xsl:value-of select="$xslbasepath"/>/default.xsl
</xsl:attribute>
</xsl:include>
Die PHP-XSL Extension (Sablotron) meckert nun rum, weil bei xsl:include angeblich ein notwendiges Attribut fehlen würde. Er erkennt wohl die Definition von href nicht, weil es nicht direkt im xsl:include Tag definiert ist.
Kann mir da jemand weiterhelfen ? Entspricht das Verhalten dem XSL Standard, oder ist das ein
Bug von Sablotron ?
Danke und Gruss
Marko
Hallo,
Die PHP-XSL Extension (Sablotron) meckert nun rum, weil bei xsl:include angeblich ein notwendiges Attribut fehlen würde.
xsl:include ist zudem ein leeres Element und kann nicht den zugewiesenen Inhalt haben. Versuche es so:
<xsl:include href="{$xslbasepath}/default.xsl"/>
MfG, Thomas
Hallo Thomas,
<xsl:include href="{$xslbasepath}/default.xsl"/>
danke, aber es geht auch nicht, $xslbasepath wird als String nicht als Variable interpretiert.
Gruss
Marko
Hallo,
danke, aber es geht auch nicht, $xslbasepath wird als String nicht als Variable interpretiert.
Gibt es denn diese Variable (oder einen so bezeichneten Parameter) ueberhaupt?
MfG, Thomas
Hallo,
ich möchte verschiedene XSL Dateien kombinieren. Die Pfade sind variabel, und sollen als Parameter von außen geliefert werden. Ich habe als Basispfad den Parameter $xslbasepath definiert, und möchte diesen nun in einem xsl:include verwenden. Probiert habe ich es so:
xsl:include
<xsl:attribute name="href">
<xsl:value-of select="$xslbasepath"/>/default.xsl
</xsl:attribute>
</xsl:include>
Das wichtigste: es geht nicht.
Auch die von Thomas vorgeschlagenen Möglichkeit (<xsl:include href="{$xslbasepath}/default.xsl"/>
) kann nicht funktionieren.
Der Wert des Attributes href _muss_ eine URI sein. D.h. auch ein {$xslbasepath} wird als Teil der URI angesehen.
Wenn du versuchst Stylesheets konditional zu einbinden, ist es als würdest du z.B. in VB ein Programm schreiben, dass sich selbst beim Ausführen modifiziert.
Im Klartext: xsl:include witd zu Kompilierungszeit ausgeführt, _bevor_ die Anwendung des Stylsheets anfängt.
Du kannst etnweder miz verschiedenen mode-s arbeiten (<xsl:temlpate< name="xxx" mode="xxx"> oder mehrere Stylesheets definieren und diese je nach Bedarf inkludieren.
Grüße
Thomas
Hallo Thomas,
Im Klartext: xsl:include witd zu Kompilierungszeit ausgeführt, _bevor_ die Anwendung des Stylsheets anfängt.
Danke fuer den Hinweis. Ich bin dieser Idee nachgegangen, weil ich in einem Projekt eine Processing Instruction (xml-stylesheet) in analoger Weise erzeuge, wobei diese aber in das Ausgabedokument eingefuegt wird.
MfG, Thomas