#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']