2014-02-20 91 views
0

我寫了一個樣式表,它加載了第二個樣式表並覆蓋了一些東西。麻煩的是,要使用xsl:import元素,我似乎需要知道我嘗試導入的樣式表的絕對路徑。我怎樣才能解決這個問題?Xalan-Java:設置搜索路徑

理想情況下,我不想把絕對路徑放到樣式表中。我想通過命令行傳遞它。這樣,如果基本樣式表移動,我不必編輯所有我的樣式表。

我正在使用命令行Xalan-Java工具來應用XSLT。一看手冊,但似乎沒有任何一種「看這裏樣式表」種類的選項。

我也想過通過基部路徑作爲參數XSL - 但我不知道怎樣才能推是成xsl:import元素的href屬性...

任何提示?當然,我不能成爲第一個想要做這件事的人...


基本上我正在用DocBook寫文檔。我已經下載了一份官方DocBook XSL樣式表(它們是巨大的,並且由數千個XSL文件組成)。對於我編寫的每個文檔,我想創建一個導入DocBook XSL官方文檔的小XSL文件,然後調整一些設置(紙張大小等)。

爲了做到這一點,看起來我會有將官方DocBook XSL文件的路徑硬編碼到每個文檔的本地XSL中。而意味着如果我更新到官方樣式表的更新版本,我將不得不編輯我編寫的每個自定義XSL [因爲樣式表版本號在路徑名中]。

我會要做的是硬編碼的路徑進入腳本運行Xalan。所以如果樣式表曾經移動過,我可以編輯一個腳本,然後就完成了。但我無法弄清楚如何做到這一點。我看不出有什麼辦法可以告訴Xalan在哪裏查找導入的樣式表。

即使我使用相對路徑,那些路徑中仍然有一個硬編碼的版本號。而Windows無法執行符號鏈接,因此...

回答

0

href屬性可以是相對路徑;只要基礎URI是已知的。

如果您從命令行運行,則「主」樣式表的基本URI通常是已知的,所以這應該不成問題。我認爲你需要更具體地說明你在做什麼以及如何失敗。

0

OK,很好,我發現一個解決

寫有官方的DocBook樣式表硬編碼到它的絕對路徑一個XSL文件。讓所有的自定義樣式表都從那個導入。 (顯然你可以這樣做。)

現在,如果官方樣式表曾經移動,我只需要編輯一個文件。 (這仍然意味着我需要能夠找到神奇的樣式表。將它放在上面的文件夾中,我保留所有文檔使得這是一個簡單的相對路徑操作。)