You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MLCP导入MarkLogic时用文档内容替换默认URI?

问题

希望将文件的默认文档URI替换为文件内容中的对应值。例如默认URI为/test/Invoice.xml,需要替换为/Invoice_{从文件DateCreated字段提取的时间}.xml。示例文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Test xsi:noNamespaceSchemaLocation="file:///D:/Mapforce/Projects/schema/Test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ID>f1258d4ae0df43d5a1e05ce9139f0ed2</ID>
    <SystemRef>22000041</SystemRef>
    <DateCreated>2022-09-06T19:07:46.3492849+01:00</DateCreated>
    <TimeSaved>240</TimeSaved>
    <ManyReasons/>
    <SubmissionUser>System</SubmissionUser>
    <InternalBusinessUnit>Finance</InternalBusinessUnit>
    <Direction>Inbound</Direction>
</Test>

请问如何通过MLCP实现该需求?


实现方案

要通过MLCP实现从XML内容提取字段生成自定义文档URI,核心是利用MLCP的内容转换机制,结合XSLT提取目标字段并生成URI。具体步骤如下:

1. 编写XSLT转换文件

创建一个XSLT文件(例如custom-uri-transform.xsl),该文件需要保留原XML内容,同时通过MLCP专属的mlcp:metadata模式生成自定义URI:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 保留原XML结构不变 -->
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <!-- 生成自定义文档URI -->
    <xsl:template match="/" mode="mlcp:metadata">
        <metadata>
            <uri>
                <xsl:text>/Invoice_</xsl:text>
                <!-- 提取DateCreated字段值,替换URI非法字符(冒号、点) -->
                <xsl:value-of select="replace(/Test/DateCreated, '[:.]', '_')"/>
                <xsl:text>.xml</xsl:text>
            </uri>
        </metadata>
    </xsl:template>
</xsl:stylesheet>
  • 若XML存在命名空间,需在XSLT中添加对应命名空间声明,并调整/Test/DateCreated的节点路径;时间格式可根据需求修改replace函数规则,比如截取到秒级或移除时区信息。

2. 执行MLCP导入命令

在MLCP命令中指定转换模块及参数,示例命令如下:

mlcp import -host localhost -port 8000 -username admin -password admin \
    -input_file_path /local/path/to/xml/files \
    -transform_module /local/path/to/custom-uri-transform.xsl \
    -transform_namespace "http://www.w3.org/1999/XSL/Transform" \
    -transform_param "mode=mlcp:metadata"

关键参数说明:

  • -transform_module:指向本地或MarkLogic服务器上的XSLT转换文件路径
  • -transform_param "mode=mlcp:metadata":触发MLCP使用XSLT中的元数据生成模式
  • 若使用服务器端模块,需将XSLT上传至MarkLogic的模块数据库,并指定模块的数据库路径。

3. 验证结果

导入完成后,在MarkLogic中查看文档,其URI将变为/Invoice_2022-09-06T19_07_46_3492849+01_00.xml(或自定义格式),原XML内容完全保留。


内容的提问来源于stack exchange,提问作者Rashmita Purkayastha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:35:15