Xquery代码:
declare variable $criteria as element(criteria) external ; <scopedInterventions>{ $criteria/equals/field }</scopedInterventions>
def uri = new URI("xcc://admin:admin@localhost:8001") def contentSource = ContentSourceFactory.newContentSource(uri) def request = session.newModuleInvoke("ourQuery.xqy") def criteria = """<criteria> <equals> <field>status</field> <value>draft</value> </equals> </criteria> """ request.setNewVariable("criteria",ValueType.ELEMENT,criteria); session.submitRequest(request).asstring() }
我们在执行时遇到此错误:
Caused by: com.marklogic.xcc.exceptions.XQueryException: XDMP-LEXVAL:
xs:QName(“element()”) — Invalid lexical value “element()” [Session:
user=admin,cb={default} [ContentSource: user=admin,cb={none}
[provider: address=localhost/127.0.0.1:9001,pool=1/64]]] [Client:
XCC/5.0-3,Server: XDBC/5.0-3] expr: xs:QName(“element()”) at
com.marklogic.xcc.impl.handlers.ServerExceptionHandler.handleResponse(ServerExceptionHandler.java:34)
at
com.marklogic.xcc.impl.handlers.EvalRequestController.serverDialog(EvalRequestController.java:83)
at
com.marklogic.xcc.impl.handlers.AbstractRequestController.runRequest(AbstractRequestController.java:84)
at
com.marklogic.xcc.impl.SessionImpl.submitRequestInternal(SessionImpl.java:373)
at
com.marklogic.xcc.impl.SessionImpl.submitRequest(SessionImpl.java:356)
at
com.zynx.galen.dataaccess.MarkLogicUtilities.executeQueryWithMultipleXMLParameters(MarkLogicUtilities.groovy:52)
at
com.zynx.galen.repositories.ScopedInterventionService.getScopedInterventionsByCriteria(ScopedInterventionService.groovy:20)
… 1 more
任何帮助都会非常感激.
Passing Variables With Queries
Variables may be bound to Request objects. When an execution request
is issued to the server with Session.submitRequest(Request) all the
variables currently bound to the Request object are sent along and
defined as external variables in the execution context in the server.XCC lets you create XdmNodes and XdmSequences,as well as XdmAtomic
values. However,in the initial XCC release values of this type may
not be bound as external variables because MarkLogic Server cannot yet
accept them. This capability is anticipated for a future release.
由于不支持XdmNode,我认为它的子类XdmElement也不受支持.所以这些类只对响应有用,而不是请求.错误消息可能会有所改进.
您可以使用setNewStringVariable传递XML字符串,然后在XQuery模块中调用xdmp:unquote.请注意,xdmp:unquote返回文档节点,因此/ * XPath步骤会生成其根元素.
declare variable $xml-string as xs:string external ; declare variable $criteria as element(criteria) := xdmp:unquote($xml-string)/* ; ....
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。