开发者

Split xml file with result document and javax.xml.transform.Transformer

I have a XSLT which will split large xml file into multiple xml file with the use of following xslt code.

<xsl:variable name="filename" select="resolve-uri(concat('splitfilesfolder/',position(),'.xml'))" /> 
 <xsl:result-document href="{$filename}" format="xml">
    <--XML file content --->
 </xsl:result-document>

then i have used that XSLT in my code to split input XML file using javax.xml.transform.Transformer.

TransformerFactory tFactory = TransformerFactory.newInstance();
Source xslSource =  new StreamSource(xsltfilepath);

Transformer trans = tFactory.newTransformer(xslSource);
trans.transform(new StreamSource(xmlFile开发者_如何学CName), new StreamResult(splitfilesfolder));

Here i want to give same path for new Streamresult as it is in result document path how can i transform multiple xml file using result doucment and javax.xml.transform.Transform ??

Can anybody please give me a solution ?

Thanks in advance.


<xsl:result-document> is in XSLT 2.0 javax.xml.transform does not support XSLT 2.0, so i'm under the impression that you're out of luck using built-in transformers.

Try using Saxon instead. Just add the jar file to your classpath and you're set.

There is also an error in your XSLT

 <xsl:result-document href="{$filename}" format="xml">

Should be

 <xsl:result-document href="{$filename}" method="xml">

To get the directory into your XSLT i'd use

Java

trans.setParameter("dir", "dirname");

XSL

<xsl:param name="dir"/>


Create an instance of Saxon's TransformerFactory directly, i.e. TransformerFactoryImpl factory = new TransformerFactoryImpl(); Do not use the brain-dead JAXP TransformerFactory.newInstance(); ...as you're clearly getting something other than Saxon's implmentation.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜