【发布时间】:2021-03-29 15:19:13
【问题描述】:
我在 C# 项目中使用 Schematron.NET 来验证 XML(格式如下):
<bpr:item xmlns:bpr="http://etcetc.com">
<bpr:name>Title</bpr:name>
<bpr:contents>
<process>Process1</process>
</bpr:contents>
</bpr:item>
sch文件包含以下代码:
<ns prefix="bpr" uri="http://etcetc.com"/>
<pattern name="Title" xmlns="http://purl.oclc.org/dsdl/schematron">
<rule context="item/contents">
<assert test="process='Process2'">Process not found.</assert>
</rule>
</pattern>
这是使用 NMatrix.Schematron.dll 的 C#:
Validator val = new Validator();
XPathDocument docnav = new XPathDocument(xmlPath);
XPathNavigator nav = docnav.CreateNavigator();
nav.MoveToRoot();
val.AddSchema(schemaFilePath);
val.ValidateSchematron(nav);
为什么它没有检索到任何结果?
【问题讨论】:
-
欢迎 - 请提供minimal reproducible example
-
抱歉,Daniel,让我包含 C# 供您复制。
-
架构格式不正确,被忽略。格式良好的 XML 文件只有一个根标记。您的架构在根目录下同时具有 ns 和模式。
-
@jdweng 谢谢。你碰巧知道我如何将它们分组到一个根标签中?
-
字符串 xml = "
" + your_xml + " ";
标签: c# xml schematron