当前位置: 首页 > 面试题库 >

捕获xsl结果文档的输出流

黄向明
2023-03-14
问题内容

我需要一种方法来干扰编写xsl结果文档,以避免将它们写入文件系统。现在我的模板正在写到一个临时目录,然后我压缩该目录。我想用这种方式写到文件系统。我正在使用撒克逊处理器。可以使用仅使用标准Java库的解决方案。任何建议表示赞赏。

编辑: 我发现了.net saxon
api的此类http://www.saxonica.com/documentation/dotnetdoc/Saxon/Api/IResultDocumentHandler.html
我需要一些与Java等效的东西。


问题答案:

您需要实现接口net.sf.saxon.OutputURIResolver
http://www.saxonica.com/documentation/javadoc/net/sf/saxon/lib/OutputURIResolver.html。
您可以根据需要使用resolve方法重定向输出。就我而言,这就是实现的类的样子。

public class ZipOutputURIReslover implements OutputURIResolver{

    private ZipOutputStream zipOut;

    public ZipOutputURIReslover(ZipOutputStream zipOut) {
        super();
        this.zipOut = zipOut;
    }

    public void close(Result arg0) throws TransformerException {
        try {
            zipOut.closeEntry();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public Result resolve(String href, String base) throws TransformerException {
        try {
            zipOut.putNextEntry(new ZipEntry(href));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new StreamResult(zipOut);
    }
}

之后,您需要注册net.sf.saxon.OutputURIResolver到trasnformer工厂。

ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("file.zip"));
factory.setAttribute("http://saxon.sf.net/feature/outputURIResolver", new ZipOutputURIReslover(zipOut));

当您加载模板并运行转换时,所有xsl:result-documents将直接写入zipOutputStream。

在这里找到答案http://sourceforge.net/p/saxon/discussion/94027/thread/9ee79dea/#70a9/6fef



 类似资料:
  • 我使用xsl:result-document将输入XML文件拆分为多个子文档。当我的转换在输入文件上的一个大数组上运行时,两个输入“有数据”,因此xsl:result document会尝试创建同一个输出文件两次,从而出错。 理想情况下,我只想创建第二个文档,在文件扩展名之前添加“_2”。我是XSL 2.0的新手,无法想象如何实现这一点。如果有一个全局数组(更像是一个映射),可以保存文档中使用的每

  • 问题内容: 有没有办法获得输出而无需重定向?我试过了: 和 但是我很快发现它又回来了。有没有什么办法解决这一问题? 问题答案: 不幸的是,在3.4之前的Python版本中,该模块使用print语句进行stdout,因此它不会返回任何直接有用的东西。要么你不得不重新实施,和功能,或者你暂时代替一个替代捕获输出: 实际上,最好使用上下文管理器完成此操作: 这样,即使出现问题,也可以确保您已恢复。一点示

  • 所以我们在一组15k推文上运行多项式朴素贝叶斯分类算法。我们首先根据Weka的StringToWordVector函数将每条推文分解成一个单词特征向量。然后,我们将结果保存到一个新的arff文件中,作为我们的训练集提供给用户。我们用另一组5k推文重复这个过程,并使用从我们的训练集中导出的相同模型重新评估测试集。 我们想做的是输出weka在测试集中分类的每个句子及其分类...我们可以看到算法的性能和

  • 除非你开发的是非常简单的控制台应用, 否则你应该不希望php脚本代码产生的输出 直接被扔到激活的终端上. 捕获这些输出和你刚才用以覆写启动处理器的方法类似. 在sapi_module_struct中还有⼀些有用的回调: typedef struct _sapi_module_struct { ... int (*ub_write)(const char *str, unsigned

  • 我正在使用XSLT将包含复杂数据结构、自由文本等的xml文档转换为HTML文档。我处理的文档可以包含或不包含结构项,如果存在结构标记,则可以任意嵌套。数据标记可以引用任何类型的商品,因此我事先不知道XML文档的内容。 文件看起来像 desiderata HTML文档应类似于: 事实上,我不知道这是否是一个好的解决方案,但是因为我不知道我的xml是否包含结构标签,所以我使用了一个“开关”来在两个主模

  • 你可以使用 str函数将Beautiful Soup文档(或者它的子集)转换为字符串, 或者使用它的code>prettify或renderContents。 你也可以使用unicode函数以Unicode字符串的形式获得。 prettify 方法添加了一些换行和空格以便让文档结构看起来更清晰。 它也将那些只包含空白符的,可能影响一个XML文档意义的文档节点(nodes)剔除(strips out