2012-11-06 58 views
0

在XSLT(即用于网页,HTML报告等)和Java类(即Xml节点对象等)之间共享XPath是否有共同的解决方案?例如,某种类型的独立XML配置文件包含所有XPath,然后可以通过XSLT样式表和Java类为各种目的读取它们?在XSLT和Java类之间共享XPath

当我从更改中解析数据的XML数据的模式(模式是许多组织经常更改的标准模式)时,这将会很方便 - 然后,我可以对此单一源进行更改并在架构更新时将它反映在XSLT和Java类中。

我想我在XSLT方面的经验有限。一个更好的问题可能是:你能否读取外部文件(如果是,哪些类型?),并将这些外部文件中的值作为XSLT中的变量赋值?

谢谢!

回答

1

许多XSLT处理器都有一个xx:evaluate()扩展名,可用于从文件中读取XPath表达式并执行它们。如果XPath表达式封装与样式表本身分开维护的业务规则(例如计算折扣),这可能是一种有用的技术。

另一种技术是将XPath表达式封装在函数库(可以是Java,可以是XQuery)中,以便可以从Java或XSLT调用这些函数。细节取决于您使用的实际技术。

+0

感谢Michael,我刚刚阅读您的书XPath 2.0和XSLT 2.0程序员参考,真是巧合!我们使用的XSLT报告是使用Saxon 9.4生成的,比Java中内置的java.xml.transform库快得多。干杯:)。 我正在使用JBoss AS 7.1托管的Java RESTFul Web服务来同时向精简Java客户端应用程序传输数据以及使用XSLT在浏览器中生成HTML报告(它具有将多个XML数据拼接在一起的逻辑使用XPath表格和解析数据以呈现在HTML中)。 – fuzzyanalysis

+0

从XSLT引用Java函数库是解决方案,非常感谢。 http://cafeconleche.org/books/xmljava/chapters/ch17s03.html – fuzzyanalysis