XSLT与数据库查询

时间:2011-04-28 13:51:35

标签: java xslt xquery

我在Java应用程序中已经进行了一段时间的XML转换,我仍然不清楚选项是什么,最好的选择是从数据库中读取记录并将其插入到我的转换后的输出文件中。

到目前为止,我一直在做的是使用xQuery查询Oracle数据库,结果给了我一个节点集。然后我将此结果作为参数传递给变换器,并在转换期间查询该参数以将数据插入到适当的节点中。

这是最好的做法吗?我的基本语言是Java。获得相同结果的其他选择是什么?

另外我认为值得一提的是,db查询大多数时候都是基于源XML文件的内容。

由于

2 个答案:

答案 0 :(得分:1)

一种可能性是在XSLT脚本中实例化Java对象;

    <!-- Connection to the data provider. -->
    <xsl:variable name="provider" xmlns:java="http://xml.apache.org/xalan/java"
        select="java:my.sample.DataProvider.getInstance()" />

稍后使用它在脚本中提供数据:

    <xsl:template match="node">
        <xsl:variable name="mydata" xmlns:java="http://xml.apache.org/xalan/java"
                    select="java:getdata($provider,  string(@attr))" />

这将调用getData(String)类上由静态getInstance()方法创建的对象上的方法my.sample.DataProvider

您可以使用这样的设置从缓存中获取值(例如,您尝试在当前设置中作为参数传递的查询结果),或者在执行转换时执行查询(防止查询不是通过变换访问。)

答案 1 :(得分:1)

您是否查看了Saxon SQL扩展,特别是在<sql:query>扩展元素?