我正在通過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