首页 > 解决方案 > 无法通过 MarkLogic Corb 工具获取 XML 文件

问题描述

我想通过 MarkLogic CoRB 工具获取 xml 输入文件以继续进行,但无法通过 CoRB 工具获取此文件:

ML 配置属性文件:

    THREAD-COUNT=16
    MODULE-ROOT=/
    MODULES-DATABASE=.\\37074\\XQuery\\PROD-MetadataModules
    XML-FILE=.\\37074\\input\\asme_module_v3.xml
    XML-NODE=rdf:RDF
    PROCESS-MODULE=.\\37074\\XQuery\\upload-skos-file.xqy|ADHOC
    EXPORT-FILE-DIR=.\\37074\\Report
    EXPORT-FILE-NAME=update-Non-member-price-report.xml
    EXPORT-FILE-TOP-CONTENT="Record"
    URIS-LOADER=com.marklogic.developer.corb.FileUrisXMLLoader
    PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileTask
    DECRYPTER=com.marklogic.developer.corb.JasyptDecrypter

XML 输入文件('asme_module_v3.xml'),我想通过 MarkLogic Corb 工具通过 'upload-skos-file.xqy' 获得:

    <?xml version="1.0" encoding="UTF-8"?>
    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:skos="http://www.w3.org/2004/02/skos/core#">
    <skos:ConceptScheme rdf:about="http://www.bsigroup.com/asme/">
    <skos:hasTopConcept rdf:resource="http://www.bsigroup.com/asme/A112"/>
    <skos:hasTopConcept rdf:resource="http://www.bsigroup.com/asme/A120"/>
    </skos:ConceptScheme>
    </rdf:RDF>

'upload-skos-file.xqy' 文件中的代码:

    xquery version "1.0-ml";
    declare variable $URI external;
    let $skos-number := $URI
    let $_           := xdmp:log("=========================skos-number===========================")
    return xdmp:log($skos-number)

MarkLogic corb 工具成功执行,但在 Marklogic 日志文件中没有任何条目,我不确定那里哪里出错了。

标签: xquerymarklogic-8marklogic-corb

解决方案


CoRB StreamingXPath 当前无法注册和利用命名空间和命名空间前缀,因此以命名空间限定元素为目标的 XPath 不能利用命名空间前缀。

但是,在文档元素上使用谓词过滤器进行更通用的匹配local-name()将起作用。它有点难看,打字更多,但有效:

XML-NODE=*[local-name()='RDF' and namespace-uri()='http://www.w3.org/1999/02/22-rdf-syntax-ns#']

或者如果 RDFlocal-name()足够好:

XML-NODE=*[local-name()='RDF']

推荐阅读