gpt4 book ai didi

xml - 如何在 Schematron 中测试不存在的元素

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:11 25 4
gpt4 key购买 nike

是只有我自己还是不可能通过 Schematron 查找不存在的元素。我似乎也找不到关于此的任何文档。

遵循以下规则:

    <sch:rule context="/A/B/C[@TYPE='TEST1']" id="identifier-required">
identifier must be present
<sch:assert test="not(.)" id="identifier-required">
identifier-required: identifier must be present
</sch:assert>
</sch:rule>

并将其应用于以下文档:

<A>
<B>
<C TYPE="TEST2">TEST</C>
<C TYPE="TEST3">TEST</C>
</B>
</A>

理论上这应该会失败,但我发现它不会。有人知道这是否正确吗?

最佳答案

当然可以检查 Schematron 中是否缺少元素。

您的断言不会失败,因为它的规则上下文不匹配。

如果你的规则匹配,那么必然是.将存在,所以 <sch:assert test="not(.)">无论如何都不会过去。

您可以改为将上下文设置为 C 的父级然后断言这样一个 C作为 child 不存在:

<sch:rule context="/A/B" id="identifier-required">
<sch:assert test="not(C[@TYPE='TEST1'])" id="identifier-required">
identifier-required: identifier must be present
</sch:assert>
</sch:rule>

但是您的诊断消息表明您实际上希望断言这样一个 C在场,所以也许您真正想要的是:

<sch:rule context="/A/B" id="identifier-required">
<sch:assert test="C[@TYPE='TEST1']" id="identifier-required">
identifier-required: identifier must be present
</sch:assert>
</sch:rule>

您给定的 XML 会失败并显示消息“需要标识符:标识符必须存在”。

关于xml - 如何在 Schematron 中测试不存在的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com