2013-11-27 38 views
0

如何使用XSLT 1.0版檢索當前工作目錄? 我已經在這裏看到這些帖子: XSL, get current working directory How to get current document uri in XSLT?獲取XSLT v1.0的當前工作目錄?

但是,它需要2.0版,我不知道如果我有,當我試圖切換到2.0,我得到一個錯誤。 下面是XSL片斷我想:

<xsl:variable name="myURI" select="resolve-uri('my.xsl')"/> 

<xsl:variable name="myURI" select="document-uri(document(''))" /> 

,並在這兩種情況下我得到的錯誤:

Error! Error checking type of the expression 'funcall(resolve-uri, [literal-expr(junit-frames.xsl)])'. 
Fatal Error! Could not compile stylesheet 

Error! Error checking type of the expression 'funcall(document-uri, [funcall(document, [literal-expr()])])'. 
Fatal Error! Could not compile stylesheet 

然後我也看到了這個帖子在這裏:xslt get the file current folder path

但是,因爲我是XSLT新手,我不明白答案或如何im感謝它。任何人都可以提供一個示例代碼片段?謝謝!

+0

什麼XSLT處理器? –

+0

我不確定,它是Ant 1.8.2中的一個。 – user1613270

+0

「我試圖切換到2.0」 - 僅僅將version =「1.0」'更改爲'version =「2.0」'是不夠的,您需要支持XSLT 2.0的處理器,例如[Saxon](http:///saxon.sf.net) –

回答

1

您在評論中說您使用的處理器「隨附Ant 1.8.2」。在這種情況下,最簡單的答案可能會在當前目錄作爲參數傳遞

<xslt style="stylesheet.xsl" in="in.xml" out="out.xml"> 
    <param name="basedir" expression="${basedir}" /> 
</xslt> 

,並在樣式表中添加一個頂級

<xsl:param name="basedir" /> 

現在,您可以訪問到當前目錄路徑$basedir

如果您需要將路徑作爲URI而不是本機文件路徑,你可以使用makeurl:您正在使用

<makeurl file="${basedir}" property="basedir.url" /> 
<xslt style="stylesheet.xsl" in="in.xml" out="out.xml"> 
    <param name="basedir" expression="${basedir.url}" /> 
</xslt>