2012-03-21 116 views
3

我一直在研究OSGI以確定其更新現有項目的可行性。該項目目前由包含XSL變換的模塊(基本上只是目錄)組成。這些轉換包含以xsl:import和xsl:include語句形式從其他模塊轉換的依賴關係。我正在考慮OSGI的原因是因爲隨着模塊數量的增加,跟蹤相關性並有效測試模塊變得越來越困難。跨OSGI捆綁包的XSLT依賴關係

是否可以使用OSGI框架來聲明捆綁包中包含的XML/XSLT資源,並將這些資源引用到XSL Transforms的導入語句中的單獨包中。

回答

2

是的,這與Lukasz指出的一樣,你需要根據擴展模型編寫一個簡單的URIResolver。一個有趣的方法是使用Provide-Capability和Require-Capability頭來建模依賴關係。這將允許您通過良好的診斷來處理依賴關係,允許您並行運行多個版本,並且可以與OBR(一種可以找到缺失部分的解析器)一起工作。請參閱http://www.osgi.org/blog/2012/03/requirements-and-capabilities.html

這將是我第一次看到使用XSLT是XML這一事實...您可以編寫一個簡單的樣式表來生成Require-Capability頭文件! :-)

+0

這已經可用了嗎?我無法找到有關R5何時到來的任何信息,或者它已經在那裏? – 2012-03-22 15:22:52

+0

R5最終草案將在OSGi DevCon BOF(EclipseCon)週二晚上展示。無論如何,所描述的模型已經適用於4.3框架。 – 2012-03-25 14:35:27

2

你的問題似乎很有趣。就我個人而言,我正在研究一個有兩個捆綁的系統。一個包含XSLT Processor實現(我們使用的是Saxon),而另一個包含多個XSLT文件(使用xsl:import指令)。而且它在OSGi環境下很酷(實際上是Fuse ESB),但是我們需要實現javax.xml.transform.URIResolver接口並將其傳遞給轉換器。

我想你會需要使用類似的方法。希望這可以幫助。

+0

Lukasz,這聽起來很不錯。你有任何代碼示例或鏈接來指導如何做到這一點? – 2015-03-10 15:54:11

0

如果我是你,我只會使用Maven進行依賴管理 - 設置你的依賴關係更簡單,它確實可以很好地處理傳遞依賴關係。如果您需要能夠在運行時更改XSL模塊,請使用OSGi。在這兩種情況下,您都需要實施其他答案中提到的URIResolver

相關問題