Me gustaría que mi archivo de salida generado contenga rutas de archivos que apuntan a una ruta relativa a la hoja de estilos. La ubicación de la hoja de estilos puede cambiar y no quiero usar un parámetro para la hoja de estilos. Mi solución para esto es para obtener la hoja de estilo URI completo:Hacer manipulaciones de rutas de archivos en XSLT
<xsl:variable name="stylesheetURI" select="document-uri(document(''))" />
Ahora sólo tiene que cortar el nombre del fichero de $stylesheetURI
. Esto me ha inspirado para escribir XSLT 2.0 clones de las funciones de PHP basename y dirname:
<xsl:function name="de:basename">
<xsl:param name="file"></xsl:param>
<xsl:sequence select="tokenize($file, '/')[last()]" />
</xsl:function>
<xsl:function name="de:dirname">
<xsl:param name="file"></xsl:param>
<xsl:sequence
select="string-join(tokenize($file, '/')[position() != last()], '/')" />
</xsl:function>
Ahora puedo hacer algo como esto en mi plantilla:
<img src="{concat(de:dirname($stylesheetURI),'/img/myimage,png')}" />
Mi pregunta es: ¿Hay una mejor/formas más rápidas de lograr esto con XSLT 2.0 nativo?
Disfruté trabajando en esta pregunta (+1). Vea mi respuesta por lo que parece ser un 25% más rápido. :) –