从关系数据库以xml形式输入xquery和数据

从关系数据库以xml形式输入xquery和数据,xquery,saxon,Xquery,Saxon,我使用xquery处理关系数据库。我在考虑实现某种SAXSource、DOMSource或StreamSource,将其连接到关系数据库作为数据输入。运行xquery并让saxon将结果xml作为输出流返回。xml的关系数据库将是非常简单的xml结构,表示输入到saxon的数据。以前有人这样做过,或者有我可以查看的示例代码吗?只需要看看如何从关系数据库构建输入流,以及如何调用Saxon将其用作输入流。主要问题是性能。Saxon将数据库简单地视为一个要加载到内存中的大XML文件,它不会将XQuer

我使用xquery处理关系数据库。我在考虑实现某种SAXSource、DOMSource或StreamSource,将其连接到关系数据库作为数据输入。运行xquery并让saxon将结果xml作为输出流返回。xml的关系数据库将是非常简单的xml结构,表示输入到saxon的数据。以前有人这样做过,或者有我可以查看的示例代码吗?只需要看看如何从关系数据库构建输入流,以及如何调用Saxon将其用作输入流。

主要问题是性能。Saxon将数据库简单地视为一个要加载到内存中的大XML文件,它不会将XQuery或XPath查询中的谓词转换为关系数据库引擎可以用于优化的SQL谓词,例如,通过使用数据库中的索引


但除此之外,编写一个读取SQL表并发出一系列SAX ContentHandler事件以将其表示为平面XML结构的类听起来一点也不困难,一旦完成了这项工作,就很容易将其包装到SAXSource中,以便Saxon可以直接读取它

也许Saxon SQL扩展模块对您来说就足够了

我似乎无法集中精力创建一个发出一系列事件的SAX ContentHandler类,然后使用这个封装在SAXSource中的类,以便直接将其提供给Saxon。你有一些简单的示例代码,我可以看看吗?没有,对不起,我没有一个简单的例子可以做到这一点。您不必提供ContentHandler。您可以使用TransformerHandler接口。编写一个程序,读取SQL数据库,并对TransformerHandler进行一系列startElement和endElement调用。我可以从Saxon获得TransformerHandler的实例,以便执行startElement和endElement调用吗?如果使用JAXP API,请使用Templates.newTransformerHandler.No,我想使用实际的xquery语言来进行查询,而不是扩展sql。谢谢你。