使用Mule 3.2我试图从我的mule流中构建XML但是我得到了这个错误 我在网上尝试了一些想法,但我不断收到这条消息。
<mulexml:xslt-transformer maxIdleTransformers="2" maxActiveTransformers="5" doc:name="XSLT">
<mulexml:xslt-text>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:param name="numericId"/>
<xsl:param name="name"/>
<xsl:param name="url"/>
<xsl:template match="*">
<Publisher>
<numericId><xsl:value-of select="$numericId"/></numericId>
<name><xsl:value-of select="$name"/></name>
<url><xsl:value-of select="$url"/></url>
</Publisher>
</xsl:template>
</xsl:stylesheet>
</mulexml:xslt-text>
<mulexml:context-property key="numericId" value="#[header:SESSION:numericId]"/>
<mulexml:context-property key="name" value="#[header:SESSION:name]"/>
<mulexml:context-property key="url" value="#[header:SESSION:url]"/>
</mulexml:xslt-transformer>
ERROR:
******************************************************************************** Message : org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. (net.sf.saxon.trans.DynamicError) Code : MULE_ERROR-64999
-------------------------------------------------------------------------------- Exception stack is:
1. Content is not allowed in prolog. (org.xml.sax.SAXParseException) org.apache.xerces.util.ErrorHandlerWrapper:-1 (null)
2. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. (net.sf.saxon.trans.DynamicError) net.sf.saxon.event.Sender:308 (null)
3. org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. (net.sf.saxon.trans.DynamicError) (org.mule.api.transformer.TransformerException) org.mule.module.xml.transformer.XsltTransformer:190 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
--------------------------------------------------------------------------------
Root Exception stack trace: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1;
Content is not allowed in prolog.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************
答案 0 :(得分:1)
当文件打开和xml声明之间有空格时会发生这种情况。如果你没有那个,那么如果你正在处理一个在其开头有BOM标记的UTF-8文件,它可能会在某些情况下引起(我知道它发生在java中)。 p>
这被错误地解释为该空间。我知道以前遇到问题时(在java 5中),我必须写一个UTF8处理输入源来纠正它(如果你不能删除标记)。
编辑:不只是SAX,它是一个java问题bug description
答案 1 :(得分:1)
在执行XSLT转换器之前,请确保在消息有效内容中包含XML。 您可以在XSLT之前使用例如Object-to-XML转换器。
答案 2 :(得分:0)
尝试外部化XSL文件中的xslt-text
以避免干扰XML Mule配置。
此外,您还没有展示如何为XSLT转换器提供信息:问题可能就在它前面的数据中,也就是您提供的数据。