Hello again, Ivelin, I have coded the changes and finally got it working. The part I don't like too much is where I need to get the model in order to add the document to the DB. Until that part everything seems to fit quite nicely. Remember I got the model stored in a XMLDocumentContainer and now I need the whole model in a DOM Node or XML String in order to add it to Xindice.
This is what I did: /** * Add the document to the database */ public void addDocument() throws Exception { try { //add the document to the database XindiceManager xi = new XindiceManager(); //needs the DocumentRoot of the container xi.add(xindiceSubCol, ((Document)(((XMLDocumentContainer)(getForm().getModel())).getValue())).getD ocumentElement(), null); } catch (Exception e) { getLogger().error("DOM Document could not be created", e); throw e; } } Yeah, what a casting experience! ;-) Maybe I'm missing somehting and there's an easier way in order to get what I need... I prefer to send thi to the list for review by you or anybody else and then I'll update the Wiki howto. Once reviewed and finished maybe this will be a candidate for the official how-to docs, what do you think? Thanks for your help, I'm learning a lot. ----- Original Message ----- From: "Ivelin Ivanov" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Sunday, January 26, 2003 3:24 AM Subject: Re: XMLForm Xindice Howto added to Wiki [please, att. Ivelin] > > > > > 3) Override the getForm() method in the action > > Wouldn't it be enough to override the getFormModel() method? > > Yes. Your code looks good. > > > Something like this: > > protected Object getFormModel() { > > //to load the XML model > > Container DOMModel = null; > > Source modelSrc = null; > > //this parameter holds the name of the xml file with the empty XML > > structure > > String modelFileName = getParameters().getParameter("xmlform-model", > > null); > > if(modelFileName==null) return null; > > try { > > modelSrc = getSourceResolver().resolveURI(modelFileName); > > DOMModel = new XMLDocumentContainer(new > > StreamSource(modelSrc.getInputStream())); > > return DOMModel; > > } > > catch ( Exception e) { > > throw new CascadingRuntimeException( " Failed instantiating form > > model ", e ); > > } > > finally { > > getSourceResolver().release(modelSrc); > > } > > } > > > > > 4) Use the JXPath DOMContainer to load the xml file(constant) > > I have used XMLDocumentContainer. I see there's a DocumentContainer but > only > > present in JXPath 1.1 alpha and the jar file is still not included in > > Cocoon, so I used the soon to be deprecated mentioned. > > Btw, how could I extract a DOMNode from the root or an XML String so I > could > > store the whole structure afterwards? I see in 1.1alpha I could do > something > > like 'DocumentContainer.MODEL_DOM' but I guess in 1.0 I should get a > > JXPathContext and search for the root node so I can get the String I need. > > Am I right? > > Absolutely. On all counts. > > > > > > 5) Use the DOMContainer object as the Form model > > Ok. But where should I store it? In a separate file like the ArtistBean I > > got before? > > Or maybe would be enough to declare it and initialize it in the getForm() > or > > getFormModel() method? > > Should do. > > > > > > 6) When you need to reference a node in the model, instead of using the > > DOM > > > API, you can directly use XPath, > > > like this: getForm().getValue("/@id") > > At this stage I can only see the form and when trying to access the model > I > > get the following exception: 'Cannot setValue of an object that is not > some > > other object's property/child' > > I am not sure why that is. Look at the source of the XMLFormTransformer and > see how it uses the Form.getValue() to access properties referenced via > "ref" attributes in an XMLForm source document. > > > > > Sorry about all the questions but this is totally new for me and it is not > > easy. > > Not a problem at all. I have been looking for a good XML data model & db > example for a long time. > You are getting up to speed very fast. > > > > Cheers, > > > Ivelin > > > > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> > > --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faq/index.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>