Xquery 从 .properties 文件中提取 属性 值

Xquery extracting property values from .properties file

我目前正在尝试从我的属性文件中提取 属性 值,但是 运行 遇到了一些问题。我无法在 ML 查询控制台中对此进行测试,因为那里不存在属性文件。我目前正在尝试像这样获取文件的值

let $port := #{@properties["ml.properties-name"]}

我也看过

xdmp:document-get-properties(
   $uri as xs:string,
   $property as xs:QName

不过我认为这仅限于 .xml 文件。有没有人 way/work-around 可以访问这些值?我似乎找不到我已经查看了 Marklogic 网站上的一些文档,但似乎无法正常工作。我之前访问的方式是在 ruby 中,通过猴子修补允许我访问那些私人 fields.The 问题是我调用的 ruby 脚本只被调用一次,而我的 . xqy 文件每分钟 运行 将 args 发送到另一个函数。我需要从属性文件访问这些参数,现在我只是将它们硬编码进去。有什么想法吗?

谢谢

您不能像这样访问部署属性,但您可以将它们与部署一起传递。如果您使用最新的 Roxy 创建一个新的 REST 应用程序,您应该将此 config.xqy 的副本添加到 src/config/:

https://github.com/marklogic-community/roxy/blob/master/deploy/sample/custom-config.xqy

该文件在部署到模块数据库时会受到特殊处理。属性引用在那里被替换。在你的例子中,添加另一个变量,并在 @ml.xyz 模式之后给它一个字符串值:

declare variable $c:port := "@ml.property-name";

然后您可以导入配置库,并在您的代码中使用它。

这些所谓的 Deployer Substitutions 在 Roxy wiki 上有更详细的描述:

https://github.com/marklogic-community/roxy/wiki/Deployer-Substitutions