我正在尝试使用 ActiveMQ 进行 eXist-db 复制。当我为消费者实例配置时,它需要执行这样的 XQuery 来注册 JMS 接收器:
xquery version "3.0";
import module namespace replication="http://exist-db.org/xquery/replication" at "java:org.exist.jms.xquery.ReplicationModule";
let $jmsConfiguration := map {
"java.naming.factory.initial"
:= "org.apache.activemq.jndi.ActiveMQInitialContextFactory",
"java.naming.provider.url" := "tcp://localhost:61616",
"connection-factory" := "ConnectionFactory",
"destination" := "dynamicTopics/eXistdb-replication-example",
"subscriber.name" := "SubscriptionId",
"connection.client-id" := "ClientId"
}
return
replication:register($jmsConfiguration)
Run Code Online (Sandbox Code Playgroud)
当我运行这个查询时,它返回一个类似标题的错误。我是 XQuery 的新手,你能帮我检查一下吗?
该表示法map{ x := y, p := q }在 XSLT 3.0 的早期草案中使用,该表示法在map{ x : y, p : q }XQuery 采用时更改为。该错误消息表明您使用的实现曾经支持草案规范中的语法,但后来放弃了它。
如果这实际上是撒克逊人的“幕后”,那么完整的错误消息是“地图表达式中不再接受 ':=' 符号:使用 ':' 代替”,它准确地告诉您需要做什么。