  | |  | Cannot find the declaration... | Cannot find the declaration... 2007-05-09 - By Christine Li
> trans.transform(new DOMSource(document), new StreamResult(sw));
How did you create document? When you create a DocumentBuilder, did you set namespace aware true on the DocumentBuilderFactory? You should do:
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true); DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
Hope it helps,
Christine Li XSLT Development IBM Toronto Lab Tel: (905)413-2601 Email: jycli@(protected)
gilesP <giles@(protected)> 09/05/2007 10:13 AM
To xalan-j-users@(protected) cc
Subject Cannot find the declaration...
Hi
I am trying to integrate our web application with google-checkout. We send them an xml version of our shopping cart but their server is responding with "Error parsing XML; message from parser is: cvc-elt.1: Cannot find the declaration of element 'checkout-shopping-cart'"
The xml we are sending is .... <?xml version="1.0" encoding="UTF-8"?> <checkout-shopping-cart> <shopping-cart> <items> <item> <item-name>Cotton Lined Wellingtons - EU:40 UK:6 to 6.5</item-name> <item-description/> <unit-price currency="GBP">15.71</unit-price> <quantity>1</quantity> <merchant-item-id>Gar_217518_40</merchant-item-id> <tax-table-selector>Standard</tax-table-selector> </item></items> </shopping-cart> </checkout-shopping-cart>
I believe the <checkout-shopping-cart> element should be <checkout-shopping-cart xmlns="http://checkout.google.com/schema/2">
When we build our Document object the returned checkout-shopping-cart element does have the namespace xmlns="http://checkout.google.com/schema/2 "
The trouble seems to be when we create the xml string from the Document using xlan, it seems to drop this namespace declaration.
This is the exact code we are using to return the xml as a string where "document" is our cart as a Document which seems to have the correct namespace....
try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); StringWriter sw = new StringWriter(); trans.transform(new DOMSource(document), new StreamResult(sw)); return sw.toString(); } catch (TransformerException tEx) { tEx.printStackTrace(); }
We are using java version "1.5.0_07" If I call com.sun.org.apache.xalan.internal.Version.getVersion() I get Xalan Java 2.6.0
I hope this makes sense to somebody as I have had no luck on the google-checkout forum and this has ground our development to a halt!
Many thanks
Giles
-- View this message in context: http://www.nabble.com/Cannot-find-the-declaration...-tf3716003.html#a10395125
Sent from the Xalan - J - Users mailing list archive at Nabble.com.
<br><font size=2 face="sans-serif">> </font><tt><font size=2>trans.transform (new DOMSource(document), new StreamResult(sw));</font></tt> <br> <br><font size=2 face="sans-serif">How did you create document? When you create a DocumentBuilder, did you set namespace aware true on the DocumentBuilderFactory? You should do:</font> <br> <br><font size=2 face="Courier New">DocumentBuilderFactory dfactory =</font> <br><font size=2 face="Courier New"> DocumentBuilderFactory.<i>newInstance</i>();</font> <br> <br><font size=2 face="Courier New">dfactory.setNamespaceAware(</font><font size=2 color=#820040 face="Courier New"><b>true</b></font><font size=2 face= "Courier New">);</font> <br><font size=2 color=blue face="Courier New"><u>DocumentBuilder</u></font> <font size=2 face="Courier New"> docBuilder = dfactory.newDocumentBuilder();</font> <br> <br><font size=2 face="Courier New">Hope it helps,</font> <br> <br><font size=2 face="sans-serif">Christine Li<br> XSLT Development<br> IBM Toronto Lab<br> Tel: (905)413-2601<br> Email: jycli@(protected)</font> <br> <br> <br> <table width=100%> <tr valign=top> <td width=40%><font size=1 face="sans-serif"><b>gilesP <giles@(protected) .uk></b> </font> <p><font size=1 face="sans-serif">09/05/2007 10:13 AM</font> <td width=59%> <table width=100%> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">To</font></div> <td><font size=1 face="sans-serif">xalan-j-users@(protected)</font> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">cc</font></div> <td> <tr valign=top> <td> <div align=right><font size=1 face="sans-serif">Subject</font></div> <td><font size=1 face="sans-serif">Cannot find the declaration...</font></table> <br> <table> <tr valign=top> <td> <td></table> <br></table> <br> <br> <br><tt><font size=2><br> Hi<br> <br> I am trying to integrate our web application with google-checkout. We send<br> them an xml version of our shopping cart but their server is responding with<br> "Error parsing XML; message from parser is: cvc-elt.1: Cannot find the<br> declaration of element 'checkout-shopping-cart'"<br> <br> The xml we are sending is ....<br> <?xml version="1.0" encoding="UTF-8"?><br> <checkout-shopping-cart><br> <shopping-cart><br> <items><br> <item><br> <item-name>Cotton Lined Wellingtons - EU:40 UK:6 to 6.5</item-name><br> <item-description/><br> <unit-price currency="GBP">15.71< ;/unit-price><br> <quantity>1</quantity><br> <merchant-item-id>Gar_217518_40</merchant -item-id><br> <tax-table-selector>Standard</tax-table -selector><br> </item></items><br> </shopping-cart><br> </checkout-shopping-cart><br> <br> I believe the <checkout-shopping-cart> element should be<br> <checkout-shopping-cart xmlns="http://checkout.google.com/schema/2" ;><br> <br> When we build our Document object the returned checkout-shopping-cart<br> element does have the namespace xmlns="http://checkout.google.com/schema/2 "<br> <br> The trouble seems to be when we create the xml string from the Document<br> using xlan, it seems to drop this namespace declaration.<br> <br> This is the exact code we are using to return the xml as a string where<br> "document" is our cart as a Document which seems to have the correct<br> namespace....<br> <br> try {<br> TransformerFactory tf = TransformerFactory.newInstance(); <br> Transformer trans = tf.newTransformer();<br> StringWriter sw = new StringWriter();<br> trans.transform(new DOMSource(document), new StreamResult(sw));<br> return sw.toString();<br> } catch (TransformerException tEx) {<br> tEx.printStackTrace();<br> }<br> <br> We are using java version "1.5.0_07"<br> If I call com.sun.org.apache.xalan.internal.Version.getVersion() I get<br> Xalan Java 2.6.0 <br> <br> I hope this makes sense to somebody as I have had no luck on the<br> google-checkout forum and this has ground our development to a halt!<br> <br> Many thanks<br> <br> Giles<br> <br> -- <br> View this message in context: http://www.nabble.com/Cannot-find-the-declaration ...-tf3716003.html#a10395125<br> Sent from the Xalan - J - Users mailing list archive at Nabble.com.<br> <br> </font></tt> <br>
|
|
 |