Enumeration prefixes = nsSupport.getDeclaredPrefixes();
while (prefixes.hasMoreElements()) {
String prefix = (String)prefixes.nextElement();
contentHandler.endPrefixMapping(prefix);
}nsSupport is NamespaceSupport from SAX: this returns 'xml' as one of the declared prefixes. Crimson them *wrongly* calls 'endPrefixMapping("xml")'. Somewhere in the call stack, this must be getting 'fixed' by adding in the matching 'startPrefixMapping()' or something equivalent on the built tree. The second pass through crimson is seeing this added-in prefix mapping...boom.
You could argue that nsSupport shouldn't ever list xml as a declared prefix. Or you could more easily argue that crimson shouldn't try to close the xml prefix, ever. Or you could argue that axis shouldn't be fixing up the endPrefixMapping by adding a startPrefixMapping. I haven't figured out where this is happening yet, but it must be in there somewhere, the code above is the thing that injects the extra namespace declaration.
Glen Daniels wrote:
Hi Reto:
I just added a test in test.utils.TestXMLUtils which confirms that xml:lang is getting parsed correctly by our deserialization system, so I think we shouldn't be throwing this error. This test (and I believe your example) works fine under Xerces, but I'll bet it fails for you with crimson - could you check? This is either something Xerces is letting us be too lax about (which we should fix if so) or a problem with crimson (in which case we'll recommend you switch to Xerces).
--Glen
-----Original Message----- From: Reto Badertscher [mailto:[EMAIL PROTECTED] Sent: Monday, June 02, 2003 5:59 AM To: [EMAIL PROTECTED] Subject: Illegal Namespace prefix: "xml".
Hello, i get the following error:
Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode: faultString: org.xml.sax.SAXException: Error: URI=null Line=3: Illegal Namespace prefix: "xml".
faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace: org.xml.sax.SAXException: Error: URI=null Line=3: Illegal Namespace prefix: "xml".
at org.apache.axis.utils.XMLUtils$ParserErrorHandler.error(XMLUti
ls.java:619)
at org.apache.crimson.parser.Parser2.error(Parser2.java:3165)
at org.apache.crimson.parser.Parser2.processAttributeNS(Parser2.j
ava:1588)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1436)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuil
derImpl.java:185)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:322)
at org.apache.axis.message.MessageElement.getAsDocument(MessageEl
ement.java:684)
at org.apache.axis.message.MessageElement.getAsDOM(MessageElement
.java:710)
at org.apache.axis.message.SOAPFaultBuilder.onEndChild(SOAPFaultB
uilder.java:327)
at org.apache.axis.encoding.DeserializationContextImpl.endElement
(DeserializationContextImpl.java:1004)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1528)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Dese
rializationContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
at org.apache.axis.client.Call.invokeEngine(Call.java:2545)
at org.apache.axis.client.Call.invoke(Call.java:2515)
at org.apache.axis.client.Call.invoke(Call.java:2210)
at org.apache.axis.client.Call.invoke(Call.java:2133)
at org.apache.axis.client.Call.invoke(Call.java:1656)
at demo.bc.bank.detail.TestBindingStub.bank_get_detail(TestBindin
gStub.java:164)
at demo.BankDetailClient.main(BankDetailClient.java:32)
org.xml.sax.SAXException: Error: URI=null Line=3: Illegal Namespace prefix: "xml".
at org.apache.axis.AxisFault.makeFault(AxisFault.java:129)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:543)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
at org.apache.axis.client.Call.invokeEngine(Call.java:2545)
at org.apache.axis.client.Call.invoke(Call.java:2515)
at org.apache.axis.client.Call.invoke(Call.java:2210)
at org.apache.axis.client.Call.invoke(Call.java:2133)
at org.apache.axis.client.Call.invoke(Call.java:1656)
at demo.bc.bank.detail.TestBindingStub.bank_get_detail(TestBindin
gStub.java:164)
at demo.BankDetailClient.main(BankDetailClient.java:32)
Caused by: org.xml.sax.SAXException: Error: URI=null Line=3: Illegal Namespace prefix: "xml".
at org.apache.axis.utils.XMLUtils$ParserErrorHandler.error(XMLUti
ls.java:619)
at org.apache.crimson.parser.Parser2.error(Parser2.java:3165)
at org.apache.crimson.parser.Parser2.processAttributeNS(Parser2.j
ava:1588)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1436)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at org.apache.crimson.jaxp.DocumentBuilderImpl.parse(DocumentBuil
derImpl.java:185)
at org.apache.axis.utils.XMLUtils.newDocument(XMLUtils.java:322)
at org.apache.axis.message.MessageElement.getAsDocument(MessageEl
ement.java:684)
at org.apache.axis.message.MessageElement.getAsDOM(MessageElement
.java:710)
at org.apache.axis.message.SOAPFaultBuilder.onEndChild(SOAPFaultB
uilder.java:327)
at org.apache.axis.encoding.DeserializationContextImpl.endElement
(DeserializationContextImpl.java:1004)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1528)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.content(Parser2.java:1779)
at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1507)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:500)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:305)
at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:442)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at org.apache.axis.encoding.DeserializationContextImpl.parse(Dese
rializationContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538) ... 8 more
when receiving this message from calling a webservice:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>[B2BSERV.0088.9134] Exception occurred while processing the body of the message</faultstring>
<faultactor>http://193.5.125.246/soap/rpc</faultactor>
<detail xmlns="http://www.webmethods.com/2001/10/soap/">
<exception>
<className>java.lang.NullPointerException</className>
<message xml:lang="de-CH">
null
</message>
</exception> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Can someone please give me a hint how to prevent this error?
Thanks a lot for any help
Reto Badertscher
