AW: Create Result Set without Iterator

"Pasche" <[email protected]> Wed, 7 Sep 2005 14:43:22 +0200
Newsgroups gmane.text.xml.xindice.user
Message-ID <[email protected]>
Perfect……thanks a lot !!!

 

JasDA

 

  _____  

Von: Eickvonder Bjoern [mailto:[email protected]] 
Gesendet: Mittwoch, 7. September 2005 14:12
An: [email protected]
Betreff: AW: Create Result Set without Iterator

 

Sorry forget one line, add

 

   if(node instanceof Document) node =
((Document)node).getDocumentElement();

 

before importing and it should work

 

Bjoern

 


  _____  


Von: Pasche [mailto:[email protected]] 
Gesendet: Mittwoch, 7. September 2005 13:55
An: [email protected]
Betreff: AW: Create Result Set without Iterator

The answer sounds good to me but are you sure that a document is supported
by a DOMSource. I´ve just tried your example and there are no errors during
compilation. But if I start the example I get the following error:

 

root cause 

org.w3c.dom.DOMException: NOT_SUPPORTED_ERR: The implementation does not
support the requested type of object or operation. 
        at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
        at org.apache.xerces.dom.CoreDocumentImpl.importNode(Unknown Source)
        at ausgabe.Ausgabe.Artikel_transformieren(Ausgabe.java:106)
        at ausgabe.Ausgabe.Artikel_zurueckgeben(Ausgabe.java:176)
        at org.apache.jsp.ergebnis_jsp._jspService(ergebnis_jsp.java:315)
        at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:2
10)
        at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:256)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:171)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172
)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
eNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne
ction(Http11Protocol.java:392)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:619)
        at java.lang.Thread.run(Thread.java:534)

 

 


  _____  


Von: Eickvonder Bjoern [mailto:[email protected]] 
Gesendet: Mittwoch, 7. September 2005 13:36
An: [email protected]
Betreff: AW: Create Result Set without Iterator

 

You will probably need to merge the results before transforming. Just create
a Document object, create and append a root element of your choice, import
and append the result nodes, then transform it. The following should work:

 

Document doc =
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

Element root = doc.createElement("result");

doc.appendChild(root);

while (results.hasMoreResources())

{           

    XMLResource res1        = (XMLResource) results.nextResource();

    Node node                    = res1.getContentAsDOM();

    root.appendChild(doc.importNode(node,true));   

}

DOMSource src            = new DOMSource(doc);                     

 

………

transformer.transform(src, res);

 

Bjoern Eickvonder

 


  _____  


Von: Pasche [mailto:[email protected]] 
Gesendet: Mittwoch, 7. September 2005 13:05
An: [email protected]
Betreff: Create Result Set without Iterator

As you can see the Xindice-query returns a result with more than one
document. These documents are transformed into a DOMSource Object which is
used to transform the documents with an XSLT stylesheet. It was hard for me
to get this transformation working. In my example only the last result of
the xindice query will be used for the transformation. Is it possible to put
all result elements into the src-object? I know that I don´t need the
ResourceIterator but I don´t know how to solve the problem without it.

 

XPathQueryService service        = (XPathQueryService)
col.getService("XPathQueryService", "1.0");

ResourceSet resultSet              = service.query(xpath);

ResourceIterator results             = resultSet.getIterator();

 

while (results.hasMoreResources())

{           

                        /* Element des ResourceIterators in DOMSource
umwandeln */

                        XMLResource res1        = (XMLResource)
results.nextResource();

                        Node node                    =
res1.getContentAsDOM();   

                        DOMSource src            = new DOMSource(node);


            }

………

transformer.transform(src, res);

 

 

 

-----

JasDA



____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.348 from 06.09.2005



____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.348 from 06.09.2005