cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Luigi Bai <...@focalpoint.com>
Subject Re: Trouble with XMLDBTransformer
Date Sun, 05 Sep 2004 18:04:06 GMT
Never mind; I fixed it. See 
http://issues.apache.org/bugzilla/show_bug.cgi?id=28723 for the patch.

Luigi Bai wrote:
> Any ideas?
> 
> Luigi Bai wrote:
> 
>> I'm having a problem with XMLDBTransformer sending an xupdate to an 
>> XMLDB database. I'm pretty sure others are using this successfully, so 
>> I'm not sure what I'm doing wrong.
>>
>> I'm using a generator to output a document that looks like this 
>> (confirmed with ?cocoon-view=content):
>>
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>> <ax:query type="update" oid="setings.xml" 
>> xmlns:ax="http://apache.org/cocoon/xmldb/1.0">
>>    <xu:modifications version="1.0" 
>> xmlns:xu="http://www.xmldb.org/xupdate">
>>       <xu:append select="/auth/login">
>>          <user name="user" uid="7" password="pickle" home="">
>>             <group>users</group>
>>          </user>
>>       </xu:append>
>>       <xu:update select="/auth/login/@last-uid">7</xu:update>
>>    </xu:modifications>
>> </ax:query>
>>
>> XMLDBTransformer correctly identifies the outer element and creates 
>> its ContentHandler for the inner one, a 
>> transformer(org.apache.xalan.transformer.TransformerIdentityImpl from 
>> Xalan 2.6.0) with a new StreamResult around a StringWriter. Once the 
>> endElement is seen for ax:query, the inner ContentHandler is sent an 
>> endDocument(), and the StringWriter is asked to produce its string to 
>> be sent to the target XUpdateQueryService. However, the string 
>> (serialized XML) lackes any xmlns Attributes, which causes at least 
>> eXist's SAX parser to throw an Exception.
>>
>> String:
>> <xu:modifications version="1.0">
>> <xu:append select="/auth/login">
>> <user name="user" uid="7" password="pickle" home="">
>> <group>users</group>
>> </user>
>> </xu:append>
>> <xu:update select="/auth/login/@last-uid">7</xu:update>
>> </xu:modifications>
>>
>> throws:
>> [Fatal Error] :1:33: The prefix "xu" for element "xu:modifications" is 
>> not bound.
>> org.xml.sax.SAXParseException
>>
>> I've tried, in my cocoon.xconf, to do the following for namespaces; I 
>> turned "namespace-prefixes" on:
>>
>>   <xml-parser class="org.apache.excalibur.xml.impl.JaxpParser" 
>> logger="core.xml-parser" pool-grow="4" pool-max="32" pool-min="8">
>>     <parameter name="validate" value="false"/>
>>     <parameter name="namespace-prefixes" value="true"/>
>>     <parameter name="stop-on-warning" value="true"/>
>>     <parameter name="stop-on-recoverable-error" value="true"/>
>>     <parameter name="reuse-parsers" value="true"/>
>>     <parameter name="drop-dtd-comments" value="true"/>
>>   </xml-parser>
>>
>> Also, I modified XMLDBTransformer() to explicitly set the 
>> Output.METHOD to "xml":
>>
>>     public XMLDBTransformer() {
>>         format.put(OutputKeys.ENCODING, "utf-8");
>>         format.put(OutputKeys.INDENT, "yes");
>>         format.put(OutputKeys.OMIT_XML_DECLARATION, "yes");
>>         format.put(OutputKeys.METHOD, "xml");
>>     }
>>
>> I have a feeling it's not the Transformer nor the XMLParser which are 
>> the problem, for two reasons. One, the cocoon-view=content properly 
>> shows the namespaces, so the xml serializer there seems to work fine. 
>> Second, in XMLDBTransformer.startElement() I traced the arguments, and 
>> saw:
>> Putting prefix ax as URI http://apache.org/cocoon/xmldb/1.0
>> Putting prefix xu as URI http://www.xmldb.org/xupdate
>> Queryhandler is getting #http://www.xmldb.org/xupdate#, 
>> loc#modifications#, raw#xu:modifications#, 1 attributes.
>>
>> Queryhandler is getting #http://www.xmldb.org/xupdate#, loc#append#, 
>> raw#xu:append#, 1 attributes.
>>
>> Queryhandler is getting ##, loc#user#, raw#user#, 4 attributes.
>>
>> Queryhandler is getting ##, loc#group#, raw#group#, 0 attributes.
>>
>> Queryhandler is getting #http://www.xmldb.org/xupdate#, loc#update#, 
>> raw#xu:update#, 1 attributes.
>>
>> By looking at the count of attributes on each element, I don't see an 
>> explicit "xmlns" attribute being passed through - but I do see the 
>> startPrefixMapping happening, so I'm fine with that.
>>
>> Any suggestions? After all that, it's probably something pretty simple 
>> I'm missing. :-(
>>
>>
> 
> 


-- 
<A HREF="http://www.focalpoint.com/">Home Page</A>
education is what's left after what is learned is forgotten.
                                -- b f skinner
Luigi P. Bai                   Focal Point Software, Inc.
lpb@focalpoint.com             3701 Kirby Drive, Suite 512
turning data into information  Houston, TX   77098
                                (713) 215-1600 x 33#


Mime
View raw message