Не удалось получить XML-файл с помощью инструмента MarkLogic Corb

#xquery #marklogic-8 #marklogic-corb

Вопрос:

Я хочу получить входной xml-файл с помощью инструмента MarkLogic CoRB, чтобы продолжить, но не могу получить этот файл с помощью инструмента 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’), что я хочу получить через «upload-skos-file.xqy» с помощью инструмента MarkLogic Corb :

     <?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, я не уверен, где там произошла ошибка.

Ответ №1:

В настоящее время CoRB StreamingXPath не может регистрировать и использовать пространства имен и префиксы пространств имен, поэтому элементы XPath, предназначенные для определения пространства имен, не могут использовать префиксы пространств имен.

Однако более общее соответствие элемента документа с фильтрацией предикатов по local-name() будет работать. Это немного некрасиво и намного больше печатает, но работает:

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

Или если RDF local-name() достаточно хорош:

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