marklogic redaction:XML 以处理指令开头时出错

问题描述 投票:0回答:1

我在 mlcp 导出命令中使用编辑选项 当 XML 文件第二行以 PI 开头时,我收到一个错误: [1.0-ml] RDT-NODE:(错误:FOER0000)不支持的节点类型:只能编辑 XML 文档或 JSON 文档

问题出在修订模块中,我在 XQuery 中测试(见底部)

我的文件是:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-model type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron" href="../../../ml-schemas/coaching-report.form.sch"?>
<?xml-model type="application/xml" schematypens="http://www.w3.org/2001/XMLSchema" href="../../../ml-schemas/coaching-report.xsd"?>
<form version="coaching-report-v1" xmlns="http://data.eic.eu/model/coaching-report">
<entry name="managementTeam">
<question>
.......

如果我删除第 2 行和第 3 行:

<?xml version="1.0" encoding="UTF-8"?>
<form version="coaching-report-v1" xmlns="http://data.eic.eu/model/coaching-report">
<entry name="managementTeam">
<question>

我没有任何错误。

我的 XQuery 是:

xquery version "1.0-ml";

import module namespace rdt = "http://marklogic.com/xdmp/redaction"
    at "/MarkLogic/redaction.xqy";

rdt:rule-validate("redactRules:anonymization"),
rdt:redact(doc('/data/template/coaching-report-v1.xml'), "redactRules:anonymization")
marklogic
1个回答
0
投票

这对我来说似乎是一个错误。处理指令是 XML 文档的有效节点。我会提交一个错误。

同时,您可以通过提取根元素并构建一个新文档来进行编辑来解决该问题:

rdt:redact(document{doc('/data/template/coaching-report-v1.xml')/*}, "redactRules:anonymization")

然后,如果您在结果中需要这些 PI,请将它们放回到经过编辑的文档中:

let $doc := doc('/data/template/coaching-report-v1.xml')
let $redacted := rdt:redact(document{$doc/*}, "redactRules:anonymization")
return document{ $doc/processing-instruction(), $redacted/* }
© www.soinside.com 2019 - 2024. All rights reserved.