我正在通过xslt 2.0将xmlns =“ans”的x文件转换为java javax.xml.Transformer中的saxon转换为xml文件B中的xmlns =“bns”。java中的xmlns和xslt转换
当变换已经执行了输出XML表示XML文件的唯一值,并发生错误:
[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>
我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>
嗯duffymo,我之前做过,但没有一个结果适合我的具体情况。我会假设一个写这里的人首先尝试谷歌。 – jpee 2011-06-23 12:56:09