Chciałbym, aby mój wygenerowany plik wyjściowy zawierał ścieżki plików wskazujące ścieżkę względem arkusza stylów. Lokalizacja arkusza stylów może się zmienić i nie chcę używać parametru dla arkusza stylów. Moje rozwiązanie jest to, aby uzyskać pełny stylów URI:Robienie manipulacji ścieżkami plików w XSLT
<xsl:variable name="stylesheetURI" select="document-uri(document(''))" />
Teraz tylko trzeba odciąć od $stylesheetURI
pliku. To zainspirowało mnie do napisania XSLT 2.0 klonów funkcji PHP basename i 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>
Teraz mogę zrobić coś takiego w moim szablonu:
<img src="{concat(de:dirname($stylesheetURI),'/img/myimage,png')}" />
Moje pytanie brzmi: czy nie lepiej/szybsze sposoby osiągnięcia tego z natywnym XSLT 2.0?
Podobało mi się praca nad tym pytaniem (+1). Zobacz moją odpowiedź, która wydaje się być o 25% szybsza. :) –