MarkLogic Content Pump を使用して XML ドキュメントを取り込みます。「-tranform モジュールと -transform 名前空間」オプションを使用して、mlcp 取り込みプロセスでこれらの xml ドキュメントを変換したいと考えています。変換用の XSLT を既に作成し、ML の「モジュール」データベースにもロードしました。しかし、mlcp は xslt ファイルを受け入れず、エラーをスローします。
指図:
mlcp.sh import \
-username $username -password $passwd \
-host $host -port $port \
-input_file_path $inpath \
-input_compressed true \
-input_file_type aggregates \
-aggregate_record_element $splittag \
-aggregate_uri_id $uriid \
-aggregate_record_namespace "http://www.fda.gov/cdrh/gudid" \
-output_collections $collection \
-output_permissions my-app-role,read,my-app-role,update \
-output_uri_suffix .xml \
-transform_module /marklogic.rest.transform/xml-transform-xsl/assets/transform.xsl \
-transform_namespace "http://marklogic.com/rest-api/transform/xml-transform-xsl" \
-transform_function transform
以下のエラーがスローされます ERROR:
15/09/27 15:34:19 WARN mapreduce.ContentWriter: XDMP-MODNOTTEXT: Module /marklogic.rest.transform/fda-transform-xsl/assets/transform.xsl is not a text document
xslt 変換が mlcp で受け入れられるかどうかを知りたいですか? そうでない場合、代替手段は何ですか。
モジュールデータベースに同等の xqy ファイルを作成する MarkLogic。以下の「.xqy」ファイルを呼び出すと、パラメーターの不一致エラーがスローされます。これは、戻り値の型が間違っているためだと思います。
xquery version "1.0-ml";
module namespace simple-xsl = "http://marklogic.com/rest-api/transform/simple-xsl";
import module namespace extut = "http://marklogic.com/rest-api/lib/extensions-util"
at "/MarkLogic/rest-api/lib/extensions-util.xqy";
declare namespace xsl = "http://www.w3.org/1999/XSL/Transform";
declare default function namespace "http://www.w3.org/2005/xpath-functions";
declare option xdmp:mapping "false";
declare private variable $transform-uri := "/marklogic.rest.transform/fda-transform-xsl/assets/transform.xsl";
declare function fda-transform-xsl:transform(
$context as map:map,
$params as map:map,
$content as document-node()
) as document-node()?
{
extut:execute-transform($transform-uri,$context,$params,$content)
};