我有一个XSLT,它将使用以下xslt代码将大型xml文件拆分为多个xml文件。
<xsl:variable name="filename" select="resolve-uri(concat('splitfilesfolder/',position(),'.xml'))" />
<xsl:result-document href="{$filename}" format="xml">
<--XML file content --->
</xsl:result-document>
然后我在我的代码中使用了XSLT来使用javax.xml.transform.Transformer分割输入XML文件。
TransformerFactory tFactory = TransformerFactory.newInstance();
Source xslSource = new StreamSource(xsltfilepath);
Transformer trans = tFactory.newTransformer(xslSource);
trans.transform(new StreamSource(xmlFileName), new StreamResult(splitfilesfolder));
这里我想为新的Streamresult提供相同的路径,因为它在结果文档路径中如何使用result doucment和javax.xml.transform.Transform转换多个xml文件?
有人可以给我一个解决方案吗?
提前致谢。
答案 0 :(得分:3)
<xsl:result-document>
在XSLT 2.0中javax.xml.transform不支持XSLT 2.0,所以我觉得你使用内置变换器是不合时宜的。
请尝试使用Saxon。只需将jar文件添加到类路径中即可进行设置。
您的XSLT中也有错误
<xsl:result-document href="{$filename}" format="xml">
应该是
<xsl:result-document href="{$filename}" method="xml">
要将目录放入XSLT我会使用
爪哇
trans.setParameter("dir", "dirname");
XSL
<xsl:param name="dir"/>
答案 1 :(得分:0)
直接创建Saxon的TransformerFactory实例,即 TransformerFactoryImpl factory = new TransformerFactoryImpl(); 不要使用脑死亡的JAXP TransformerFactory.newInstance(); ......因为你显然得到的不仅仅是撒克逊人的实力。