避免在自身内部的XSL文件中创建输出文件

时间:2012-05-30 19:42:46

标签: java xml xslt runtime

假设我想要编写具有以下格式的许多xmls的文本输出。 其中一些xml文件可能没有节点[name,age,school]的值。


<学生>

<名称>&Dilruk LT; /名称>

<年龄/>

<学校> ABC< /学校>

< /学生>


所有这些xml文件都位于一个目录中,我遍历它们以生成每个xml的输出文件。

所以基本上我正在使用一个xsl文件,我正在尝试通过考虑类似格式[具有不同节点值]的这些xml文件来生成输出。

但我只需要将相应的输出写入具有特定条件的xml文件。 [假设有一个名字,因为某些xml文件不包含名称值]。

因此,如果我要转换5个xml文件,并且只有3个文件具有非空名称值,我想只生成3个输出文件。

我更喜欢XSL方面的解决方案,我知道这种解决方案最不可能,但如果我们可以在不读取输出文件的内容并删除它们或根据java端的大小[0kB]删除它们的情况下执行此操作,那么它真的很有帮助太

提前致谢:)

1 个答案:

答案 0 :(得分:0)

在XSLT 1.0中,如果没有特定于供应商的扩展,则无法在样式表级别生成多个输出。根据您使用的XSLT 1.0引擎,有一些扩展可以启用多个输出,我在下面列出了一些链接。作为替代方案,您可以考虑让您的客户端多次调用样式表,每个输入文件一次。

对于XSLT 2.0,我采取的方法是:

  1. 提供样式表,以空格分隔的输入文件名列表作为参数。
  2. 对于文件名,将其作为文档打开
  3. 对于具有名称节点的每个节点,使用xsl:result-document和模板复制到文件名基于输入文件名的输出文件。
  4. 例如样式表(XSLT 2.0),请参阅:

    对于XSLT 1.0,Microsoft案例,请参阅:

    对于XSLT 1.0,XALAN案例,请参阅:

    另见相关问题: