这是类似的问题,几乎没有差异:
Split XML file into multiple files based on a threshold value
我的根元素称为商店,要拆分的元素称为商店。我想用xsl或不用java来做这个,这是我用来触发xsl的java代码:
public void transform(String transformator, File source, String destination) {
try {
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(transformatorLocation));
try {
transformer.transform(new StreamSource(new InputStreamReader(new FileInputStream(source), "UTF-8")), new StreamResult(new OutputStreamWriter(new FileOutputStream(destination), "UTF-8")));
} catch (TransformerException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
System.err.println("File is missing");
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} catch (TransformerConfigurationException e) {
e.printStackTrace();
}
}
我在这个问题上尝试了两种解决方案,但它们都产生错误,一种是:
错误:'不支持的XSL元素'http://www.w3.org/1999/XSL/Transform:for-each-group'' javax.xml.transform.TransformerException:java.lang.RuntimeException:不支持的XSL元素“http://www.w3.org/1999/XSL/Transform:for-each-group”
其他是样式表无法编译。
我想要完成什么?将参数传递给java类在一个文件中需要多少个商店,并将其拆分为n个部分。
答案 0 :(得分:4)
我相信for-each-group
是一个XSLT 2.0构造。 java中的默认XSLT处理器尚不支持XSLT 2.0。
您需要坚持使用XSLT 1.0,或者找到一个执行2.0的XSLT处理器,然后使用它(例如,Saxon)。