假设我想要编写具有以下格式的许多xmls的文本输出 . 其中一些xml文件可能没有节点[name,age,school]的值 .
<学生>
<名称> Dilruk </名称>
<年龄/>
<学校> ABC </学校>
</学生>
所有这些xml文件都位于一个目录中,我遍历它们以生成每个xml的输出文件 .
所以基本上我正在使用一个xsl文件,我正在尝试通过考虑类似格式[具有不同节点值]的这些xml文件来生成输出 .
但我只需要将相应的输出写入具有特定条件的xml文件 . [假设有一个名称,因为某些xml文件不包含名称值] .
因此,如果我有5个xml文件进行转换,并且只有3个文件具有非空名称值,我想只生成3个输出文件 .
我更喜欢XSL方面的解决方案,我知道这种解决方案最不可能,但如果我们可以在不读取输出文件的内容并删除它们或根据java方面的大小[0kB]删除它们的情况下这样做,它也非常有用 .
提前致谢 :)
1 回答
在XSLT 1.0中,如果没有特定于供应商的扩展,则无法在样式表级别生成多个输出 . 根据您使用的XSLT 1.0引擎,有一些扩展可以启用多个输出,我在下面列出了一些链接 . 作为替代方案,您可以考虑让您的客户端多次调用样式表,每个输入文件一次 .
至于XSLT 2.0,我将采取的方法是:
提供给样式表,将空格分隔的输入文件名列表作为参数 .
对于文件名,将其作为文档打开
对于具有名称节点的每个节点,使用xsl:result-document和模板复制到文件名基于输入文件名的输出文件 .
例如样式表(XSLT 2.0),请参阅:
http://www.ibm.com/developerworks/xml/library/x-tipmultxsl/index.html
Using XSLT to output multiple files
对于XSLT 1.0,Microsoft案例,请参阅:
对于XSLT 1.0,XALAN案例,请参阅:
http://www.abbeyworkshop.com/howto/xslt/xslt_split/index.html;要么
http://www.stylusstudio.com/xsllist/200108/post50930.html
另见相关问题: