java中的xmlns和xslt转换

java中的xmlns和xslt转换,java,xslt,xslt-2.0,xml-namespaces,Java,Xslt,Xslt 2.0,Xml Namespaces,我正在使用javax.xml.Transformer通过java中的XSLT2.0Saxon将xmlns=“ans”的xml文件a转换为xmlns=“bns”的xml文件B 执行转换后,输出xml仅显示xml文件A的值,并发生错误: [Fatal Error] :3:4: Content is not allowed in prolog. 当我删除文件A的xmlns=“ans”时,结果xml文件b是正确的,并且在转换时没有发生错误。对于我的用例,将被转换的xml消息将包含一个名称空间。有没有办

我正在使用javax.xml.Transformer通过java中的XSLT2.0Saxon将xmlns=“ans”的xml文件a转换为xmlns=“bns”的xml文件B

执行转换后,输出xml仅显示xml文件A的值,并发生错误:

[Fatal Error] :3:4: Content is not allowed in prolog.
当我删除文件A的xmlns=“ans”时,结果xml文件b是正确的,并且在转换时没有发生错误。对于我的用例,将被转换的xml消息将包含一个名称空间。有没有办法在不删除输入文件的名称空间声明的情况下解决这个问题

附件:

我的java代码:

System.setProperty("javax.xml.transform.TransformerFactory",  
"net.sf.saxon.TransformerFactoryImpl");  

TransformerFactory transFactory = TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource("transformation.xsl");
Templates template = transFactory.newTemplates(stylesource);
Transformer transformer = template.newTransformer();
StreamSource source = new StreamSource(new File("filea.xml"));

StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
//result will be written to fileb.xml
我的filea.xml

<?xml version="1.0" encoding="UTF-8"?>
<message xmlns="ans">...
</message>

...
My transformation.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns="bns">
<xsl:output method="xml" indent="yes" />
...
</xsl>

...

除非您向我们展示我们只能猜测的样式表代码处理元素。我怀疑将属性
xpath default namespace=“ans”
放在
xsl:stylesheet
元素上可能会解决这个问题。如果没有,请发布足够的代码详细信息,让我们重现问题。

好吧,达菲莫,我以前做过,但没有一个结果符合我的具体情况。我想一个在这里写作的人首先尝试了谷歌。谢谢Honnen先生,这就是所需要的。