From: Markus S. K. <mar...@bs...> - 2010-12-09 09:19:47
|
Hello again, I need to add some code to make understanding my problem easier. The following is a fragment of the XQuery code I want to run: <code> let $node := doc($docPath)//TEI:placeName[@xml:id eq $id] return ( if (matches($element, "-NAM$")) then ( let $oldValue := $node/text()[1], $newValue := request:get-parameter($element, ()), $values := concat($oldValue, "_old | ", $newValue, "_new") return <update> <id>{$id}</id> <val>{$values}</val> {update replace $oldValue with $newValue} </update> ) else if (matches($element, "-DAT$")) then ( let $oldValue := $node//TEI:date/text(), $newValue := request:get-parameter($element, ()), $values := concat($oldValue, "_old | ", $newValue, "_new") return <update> <id>{$id}</id> <val>{$values}</val> {update replace $oldValue with $newValue} </update> ) else if (matches($element, "-SRC$")) then ( let $oldValue := $node//TEI:ptr/@target, $newValue := concat("#", request:get-parameter($element, ())), $values := concat($oldValue, "_old | ", $newValue, "_new") return <update> <id>{$id}</id> <val>{$values}</val> {update replace $oldValue with $newValue} </update> ) else () ) </code> While the first and the third if-statements work perfectly fine, the second one doesnt. The TEI namespace is declared and the content I am getting returned through $values is always correct, so I assume that the XPath must be just fine as well. I have tried to exchange "update replace" with "update value", to add [1] to text() or to use "$node//TEI:date/." instead. But the problem remains: I either get a 'Error 500 An unknown error occurred: Array index out of range: -1' (for server trace see below) or a 'Type mismatch: an element can only be replaced by an element.' error. Here is an example of one of the nodes I need to update (document is in TEI namespace, sending xml:id with specific additions like "-DAT" via POST): <code> <placeName xml:id="ODB_S00017413_NAM001" xml:lang="de-DE" type="main" cert="high"> Niederthann <note type="source"> <date ana="#notBefore">2001-04-08T10:15:00</date> <bibl> <ptr target="#HAB/Laube"/> </bibl> </note> </placeName> </code> I thought that maybe the text of the date-element was the problem so I changed it to something simple but didnt help either. Any help would be very much appreciated because I am pretty stuck with this problem. Thanks in advance! Regards, Markus >>> "Markus Stefan Kaindl" <mar...@bs...> 08.12.2010 16:31 >>> Hi, having a problem updating a text node within a TEI XML document using the Xquery Update Exentions on a standalone server. The approach works perfectly fine with other (parent) nodes and even updating the node itself is working. Just cant replace the text using 'update replace / value' because I am getting a "HTTP ERROR: 500 An unknown error occurred: Array index out of range: -1" (cf. output of server further down). The XPath expression is correct. Do you happen to have any idea how to solve this? Thanks for your help, Markus 08 Dez 2010 16:12:25,090 [SocketListener0-5] WARN (ServletHandler.java [handle]:577) - EXCEPTION javax.servlet.ServletException: An unknown error occurred: Array index out of range: -1 at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:588) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 08 Dez 2010 16:12:25,090 [SocketListener0-5] ERROR (ServletHandler.java [handle]:593) - /db/ODB/edit-document.xql: java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1 at org.exist.storage.NodePath.getComponent(NodePath.java:104) at org.exist.indexing.lucene.LuceneConfig.matches(LuceneConfig.java:37) at org.exist.indexing.lucene.LuceneIndexWorker.getReindexRoot(LuceneIndexWorker.java:178) at org.exist.indexing.IndexController.getReindexRoot(IndexController.java:265) at org.exist.indexing.IndexController.getReindexRoot(IndexController.java:245) at org.exist.dom.ElementImpl.updateChild(ElementImpl.java:1357) at org.exist.xquery.update.Replace.eval(Replace.java:158) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.EnclosedExpr.eval(EnclosedExpr.java:70) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.ElementConstructor.eval(ElementConstructor.java:267) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:56) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:63) at org.exist.xquery.LetExpr.eval(LetExpr.java:208) at org.exist.xquery.LetExpr.eval(LetExpr.java:206) at org.exist.xquery.LetExpr.eval(LetExpr.java:206) at org.exist.xquery.BindingExpression.eval(BindingExpression.java:158) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:56) at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:102) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:56) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:63) at org.exist.xquery.LetExpr.eval(LetExpr.java:208) at org.exist.xquery.BindingExpression.eval(BindingExpression.java:158) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.ConditionalExpression.eval(ConditionalExpression.java:100) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:56) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:63) at org.exist.xquery.LetExpr.eval(LetExpr.java:208) at org.exist.xquery.ForExpr.eval(ForExpr.java:312) at org.exist.xquery.BindingExpression.eval(BindingExpression.java:158) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.EnclosedExpr.eval(EnclosedExpr.java:70) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.ElementConstructor.eval(ElementConstructor.java:267) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:56) at org.exist.xquery.DebuggableExpression.eval(DebuggableExpression.java:63) at org.exist.xquery.LetExpr.eval(LetExpr.java:208) at org.exist.xquery.LetExpr.eval(LetExpr.java:206) at org.exist.xquery.LetExpr.eval(LetExpr.java:206) at org.exist.xquery.BindingExpression.eval(BindingExpression.java:158) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.PathExpr.eval(PathExpr.java:241) at org.exist.xquery.AbstractExpression.eval(AbstractExpression.java:61) at org.exist.xquery.XQuery.execute(XQuery.java:228) at org.exist.xquery.XQuery.execute(XQuery.java:183) at org.exist.http.RESTServer.executeXQuery(RESTServer.java:1233) at org.exist.http.RESTServer.doPost(RESTServer.java:592) at org.exist.http.servlets.EXistServlet.doPost(EXistServlet.java:556) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) ------------------------------------------------------------------------------ What happens now with your Lotus Notes apps - do you make another costly upgrade, or settle for being marooned without product support? Time to move off Lotus Notes and onto the cloud with Force.com, apps are easier to build, use, and manage than apps on traditional platforms. Sign up for the Lotus Notes Migration Kit to learn more. http://p.sf.net/sfu/salesforce-d2d _______________________________________________ Exist-open mailing list Exi...@li... https://lists.sourceforge.net/lists/listinfo/exist-open |