我一直在研究OSGI以确定其更新现有项目的可行性。该项目目前包含包含XSL Transforms的模块(基本上只是目录)。转换包含xsl:import和xsl:include语句形式的其他模块转换的依赖关系。我考虑OSGI的原因是因为随着模块数量的增加,跟踪依赖关系并有效地测试模块变得越来越困难。
是否可以使用OSGI框架声明包中包含的XML / XSLT资源,并在单独的包中引用XSL Transforms的import语句中的这些资源。
答案 0 :(得分:2)
你的问题似乎很有趣。就个人而言,我正在研究一个有两个捆绑的系统。一个包包含XSLT Processor实现(我们使用Saxon),而第二个包包含多个XSLT文件(使用xsl:import
指令)。它在OSGi环境中很酷(实际上是Fuse ESB)但是我们需要实现javax.xml.transform.URIResolver
接口并将其传递给转换器。
我想你需要使用类似的方法。希望这会有所帮助。
答案 1 :(得分:2)
是的,这就像Lukasz所说,你需要根据扩展器模型编写一个简单的URIResolver。一种有趣的方法是使用Provide-Capability和Require-Capability标头来建模依赖关系。这将允许您通过良好的诊断处理依赖关系,允许您并排运行多个版本,它将与OBR一起使用,OBR是一个可以找到缺失部分的解析器。见http://www.osgi.org/blog/2012/03/requirements-and-capabilities.html
这是我第一次看到XSLT是XML的事实......你可以编写一个生成Require-Capability标题的简单样式表! : - )
答案 2 :(得分:0)
如果我是你,我会使用Maven进行依赖管理 - 设置依赖项更简单,它确实很好地处理了传递依赖。如果您需要能够在运行时更改XSL模块,请使用OSGi。在这两种情况下,您都需要实现其他答案中提到的URIResolver
。