2009-02-24 27 views
13

如何使用xsl 1.0獲取文件名?使用xsl獲取文件名

我試圖

<xsl:value-of select="base-uri()" /> 

,但得到「致命錯誤找不到功能:基本URI」

回答

15

有沒有這樣的XPath函數,或XSLT擴展XPath的函數來做到這一點在XSLT v1/XPath v1中。

很可能沒有文件,即使沒有理由使XSLT引擎具有該文件名(考慮將文件內容加載到緩衝區中,將緩衝區解析爲DOM,然後傳遞DOM到XSLT處理器)。

您需要將文件名傳遞到處理器,以便在變換中作爲參數使用。

+0

如果你只是想要一個'使用樣式表x'創建的評論:-( – 2010-09-23 12:47:04

30

base-uri()是標準的XPath 2.0函數,所以在運行XSLT 1.0時該函數將不可用。

在XSLT 1.0中,文件名(什麼?)可以作爲參數傳遞用於轉換。

請注意它不總是可以爲樣式表或XML文檔生成文件名 - 兩者或兩者都可能駐留在內存中而沒有關聯的文件。

從問題中不清楚哪個文件名必須被生成。

下面是如何找到的文件名中的XPath 2.0/XSLT 2.0

當前文檔的文件名:

base-uri() 

當前樣式表模塊的文件名:

base-uri(document(''))