我在数据库中存储xslt。我想调用另一个xslt中的模板,该模板也存储在数据库中。使用下面的示例代码,我能够正确运行xslt(考虑xsltOneStr是通过dao层来自数据库的xslt字符串,因此是xmlStr,这是xml将被解析)从数据库导入xslt
但是,如果我在xsltOne.xsl中使用,因为源xsltOne.xsl来自db并且被调用的xsltTwo.xsl也在DB中。很明显,在我的情况下使用导入在逻辑上是不正确的,因为我没有使用文件系统来获取xsl,而是来自数据库的字符流,但为了交谈,我使用了导入标记。
因此,自从xsl来自DB的问题应该用什么来代替xsl:import。我正在使用Java & xslt能够调用java方法。有什么办法可以使用java方法来调用驻留在db(xsltTwo.xsl)中的第二个xslt。如果xsltTwo.xsl在其中可以不能通过java方法调用,那么我至少可以在xsltOne.xsl中插入一个在xsltTwo中动态声明的模板
例如,我们可以调用java方法来使用java为xsl参数赋值如
同样,我们可以分配整个模板或使用java方法从另一个xslt调用一个xslt?
Source xsltOne=new StreamSource(new StringReader(xsltOneStr));
Source xml =new StreamSource(new StringReader(xmlStr));
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xsltOne);
StringWriter writer = new StringWriter();
transformer.transform(xml, new StreamResult(writer));
即使从数据库中读取XSLT中的'xsl:import',也没有问题。你的问题更多的是如何处理XSLT,包括Java中的另一个XSLT,无论数据库如何。你看过这个链接:http://stackoverflow.com/questions/3699860/resolving-relative-paths-when-loading -xslt文件? –
@ user593029我刚刚注意到你问了很多问题,但很少[接受](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)回答。 – wero