AW: Create Result Set without Iterator
"Eickvonder Bjoern" <[email protected]> Wed, 7 Sep 2005 14:12:05 +0200
| Newsgroups | gmane.text.xml.xindice.user |
|---|---|
| Message-ID | <[email protected]> |
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:210) 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(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(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.java:191) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(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.invokeNext(StandardPipeline.java:643) at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(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.invokeNext(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.processConnection(Http11Protocol.java:392) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java: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