[ http://issues.apache.org/jira/browse/XALANJ-1860?page=all ]
Brian Minchau updated XALANJ-1860: ---------------------------------- Fix Version: 2.7 > NAMESPACE_ERR when parsing a tag with a namespace but no prefix > --------------------------------------------------------------- > > Key: XALANJ-1860 > URL: http://issues.apache.org/jira/browse/XALANJ-1860 > Project: XalanJ2 > Type: Bug > Components: transformation, Xalan-interpretive > Versions: 2.5Dx > Environment: Operating System: Linux > Platform: PC > Reporter: Arjun > Assignee: Joanne Tong > Fix For: 2.7 > > I am using Sun's SOAP libraries with xalan 2.6.0 as the underlying xml library > to create a SOAP document with a tag that has a namespace but no prefix > (<MyTag > xmlns="http://foo.com/schema"/>) which i believe is a correct syntax. When > parsing this, i get the following exception: > org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or > change > an object in a way which is incorrect with regard to namespaces. > The test program below works fine with the version of xalan included in Sun's > JDK 1.4.2_03 (details below) but crashes when setting xalan 2.6.0 as > java.endorsed.lib > I believe the problem is caused by xalan's TransformerIdentityImpl forcing > http://xml.org/sax/features/namespace-prefixes feature to true. if I had > direct > access to the XMLReader and could set the feature to false, i know it would > work > fine, but since i'm manipulating the document through SOAP APIs, there's not > much i can do. I am also reporting the problem to Sun. > It is most probably related with xalan bug #15140, but it does not fix my > problem. > -------------TEST PROGRAM----------- > import javax.xml.soap.*; > import java.io.*; > public class SoapTest > { > public static void main( String arg[] ) > throws Exception > { > MessageFactory mfactory = MessageFactory.newInstance(); > SOAPFactory sfactory = SOAPFactory.newInstance(); > SOAPMessage orig = mfactory.createMessage(); > SOAPBody body = orig.getSOAPBody(); > body.addBodyElement( sfactory.createName( "MyTag", null, > "http://foo.com/schema" ) ); //purposely set no namespace prefix > ByteArrayOutputStream baos = new ByteArrayOutputStream(); > orig.writeTo( baos ); > orig.writeTo( System.out ); > SOAPMessage parsed = mfactory.createMessage( > orig.getMimeHeaders(), new > ByteArrayInputStream( baos.toByteArray() ) ); > parsed.getSOAPBody(); > System.out.println( "done." ); > } > } > -------------STACK TRACE----------- > SOAP-ENV:Envelope > xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><MyTag > xmlns="http://foo.com/schema"/></SOAP-ENV:Body></SOAP-ENV:Envelope>Apr 16, > 2004 > 11:17:54 AM com.sun.xml.messaging.saaj.soap.EnvelopeFactory createEnvelope > SEVERE: SAAJ0511: Unable to create envelope from given source > Exception in thread "main" com.sun.xml.messaging.saaj.SOAPExceptionImpl: > Unable > to create envelope from given source: > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:79) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > Caused by: javax.xml.transform.TransformerException: org.w3c.dom.DOMException: > NAMESPACE_ERR: An attempt is made to create or change an object in a way which > is incorrect with regard to namespaces. > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:449) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > ... 4 more > Caused by: org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to > create > or change an object in a way which is incorrect with regard to namespaces. > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:322) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > ... 5 more > CAUSE: > javax.xml.transform.TransformerException: org.w3c.dom.DOMException: > NAMESPACE_ERR: An attempt is made to create or change an object in a way which > is incorrect with regard to namespaces. > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:449) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > Caused by: org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to > create > or change an object in a way which is incorrect with regard to namespaces. > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:322) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > ... 5 more > --------- > org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or > change > an object in a way which is incorrect with regard to namespaces. > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:322) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > --------- > org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or > change > an object in a way which is incorrect with regard to namespaces. > at org.apache.xerces.dom.AttrNSImpl.setName(Unknown Source) > at org.apache.xerces.dom.AttrNSImpl.<init>(Unknown Source) > at org.apache.xerces.dom.CoreDocumentImpl.createAttributeNS(Unknown > Source) > at > com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createAttributeNS(SOAPDocumentImpl.java:144) > at org.apache.xerces.dom.ElementImpl.setAttributeNS(Unknown Source) > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:307) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > CAUSE: > javax.xml.transform.TransformerException: org.w3c.dom.DOMException: > NAMESPACE_ERR: An attempt is made to create or change an object in a way which > is incorrect with regard to namespaces. > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:449) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > Caused by: org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to > create > or change an object in a way which is incorrect with regard to namespaces. > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:322) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > ... 5 more > --------- > org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or > change > an object in a way which is incorrect with regard to namespaces. > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:322) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > --------- > org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or > change > an object in a way which is incorrect with regard to namespaces. > at org.apache.xerces.dom.AttrNSImpl.setName(Unknown Source) > at org.apache.xerces.dom.AttrNSImpl.<init>(Unknown Source) > at org.apache.xerces.dom.CoreDocumentImpl.createAttributeNS(Unknown > Source) > at > com.sun.xml.messaging.saaj.soap.SOAPDocumentImpl.createAttributeNS(SOAPDocumentImpl.java:144) > at org.apache.xerces.dom.ElementImpl.setAttributeNS(Unknown Source) > at org.apache.xml.utils.DOMBuilder.startElement(DOMBuilder.java:307) > at > org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1020) > at org.xml.sax.helpers.XMLFilterImpl.startElement(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown > Source) > at > org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown > Source) > at > org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown > Source) > at > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown > Source) > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) > at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) > at org.xml.sax.helpers.XMLFilterImpl.parse(Unknown Source) > at > org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:432) > at > com.sun.xml.messaging.saaj.soap.EnvelopeFactory.createEnvelope(EnvelopeFactory.java:71) > at > com.sun.xml.messaging.saaj.soap.ver1_1.SOAPPart1_1Impl.createEnvelopeFromSource(SOAPPart1_1Impl.java:34) > at > com.sun.xml.messaging.saaj.soap.SOAPPartImpl.getEnvelope(SOAPPartImpl.java:75) > at > com.sun.xml.messaging.saaj.soap.MessageImpl.getSOAPBody(MessageImpl.java:612) > at SoapTest.main(SoapTest.java:22) > -------------JDK INFO----------- > java version "1.4.2_03" > Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) > Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) > -------------OS INFO----------- > Linux nx0145.nextenso.alcatel.fr 2.4.19-16mdk #1 Fri Sep 20 18:15:05 CEST 2002 > i686 unknown unknown GNU/Linux -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]