Tôi muốn tệp đầu ra được tạo của mình chứa đường dẫn tệp trỏ đến đường dẫn tương ứng với biểu định kiểu. Vị trí của biểu định kiểu có thể thay đổi và tôi không muốn sử dụng thông số cho biểu định kiểu. Giải pháp của tôi cho việc này là nhận được biểu định kiểu đầy đủ URI:Thực hiện thao tác trên đường dẫn tệp trong XSLT
<xsl:variable name="stylesheetURI" select="document-uri(document(''))" />
Bây giờ tôi chỉ cần cắt tên tệp từ $stylesheetURI
. Điều này đã truyền cảm hứng cho tôi viết XSLT 2.0 nhái của các chức năng PHP basename và 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>
Bây giờ tôi có thể làm một cái gì đó như thế này trong mẫu của tôi:
<img src="{concat(de:dirname($stylesheetURI),'/img/myimage,png')}" />
Câu hỏi của tôi là: Có tốt hơn/cách nhanh hơn để thực hiện điều này với XSLT 2.0 gốc?
Tôi thích làm việc với câu hỏi này (+1). Xem câu trả lời của tôi cho những gì dường như nhanh hơn 25%. :) –