AW: Create Result Set without Iterator
"Pasche" <[email protected]> Wed, 7 Sep 2005 13:55:01 +0200
| Newsgroups | gmane.text.xml.xindice.user |
|---|---|
| Message-ID | <[email protected]> |
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