Gibt es eine Möglichkeit, den aktuellen Ordnerpfad aus einer XSLT-Datei zu erhalten?
Du möchtest andere XML und XSLT Dateien
Keine Notwendigkeit für jegliche Erweiterungsfunktionen oder sogar Parameter finden, das zu tun!
Alles relativ URLs im href
Attribute einer <xsl:import>
oder <xsl:include>
Anweisung verwendet werden, auf der URL des aktuellen XSLT-Stylesheet aufgelöst basiert - es braucht nur eine URL zu haben, die als vlearly angegeben stimmt in der obigen Frage. Dies ist sehr praktisch beim Importieren/Einschließen von XSLT Stylesheets.
Diedocument()
Funktion wird auch eine relative URL in ähnlicher Weise, löst somit jedes zusätzliches XML-Dokument zugänglich mit anrelative URL zu machen.
Schließlich ist hieran example, wie diese Einrichtungen massiv in einer großen Bibliothek verwendet werden von XSLT-Funktionen und Vorlagen (FXSL 2.x):
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="xs xdt f"
>
<!--
This module contains the FXSL versions of the "standard" XPath functions
These are intended as convenience functions, so that they can be passed
as parameters to other functions (e.g. to f:zipWith())
or curried and passed as parameters (e.g. to f:map())
-->
<xsl:import href="func-curry.xsl"/>
<xsl:import href="func-compose-flist.xsl"/>
<xsl:import href="func-standardArithmeticXpathFunctions.xsl"/>
<xsl:import href="func-standardBooleanXpathFunctions.xsl"/>
<xsl:import href="func-standardStringXpathFunctions.xsl"/>
<xsl:import href="func-standardNodesXpathFunctions.xsl"/>
<xsl:import href="func-standardSequencesXpathFunctions.xsl"/>
<xsl:import href="func-standardAggregateXpathFunctions.xsl"/>
<xsl:import href="func-standardDateTimeXpathFunctions.xsl"/>
<xsl:import href="func-standardXSLTXpathFunctions.xsl"/>
<xsl:import href="func-standardAxisXpathFunctions.xsl"/>
</xsl:stylesheet>
Nicht sicher, warum dies abgelehnt wurde. Es funktioniert tatsächlich. – Tomalak
Entschuldigung dafür. Ich habe es abgelehnt, weil ich eine nicht standardmäßige Erweiterung verwendet habe, aber nachdem ich meine Antwort hinzugefügt hatte, wurde mir klar, dass ich dasselbe vorgeschlagen hatte. Ich denke, es gibt keinen "normalen" Weg, dies zu tun. (Außer mit params) –
Danke für die Erklärung Ihrer Argumentation, sehr geschätzt. :-) – Tomalak