gpt4 book ai didi

namespaces - schematron:我可以对命名空间进行分组吗

转载 作者:行者123 更新时间:2023-12-04 16:56:49 25 4
gpt4 key购买 nike

我们的内容包含来自大约 8 个不同命名空间的内容。在我下面的 schematron 规则中,我只是检查其中之一。我想按照规则来检查其中 6 个元素而不是其他 2 个元素,我不确定这样做的最佳方法。我认为最好将 6 个命名空间分组并给它们一个前缀,然后使用它。是否有可能做到这一点?

<pattern>
<rule context="def:para | def:para-text | def:block | def:quote-para | def:source-para | def:note-para" role="warning">
<report test="text()[contains(.,'www.')]">URLs should be marked up with a url tag</report>
</rule>
</pattern>

最佳答案

在 XML 中,您不能同时将多个命名空间 URI 映射到同一个前缀。命名空间的全部意义在于从不同的词汇表中消除同名元素(和属性)的歧义,因此它们没有提供混合多个命名空间的方法。
未经测试,但您可以匹配任何命名空间中的元素,然后仅测试不在不需要的命名空间中的元素:

<pattern>
<rule context="*:para | *:para-text | *:block | *:quote-para |
*:source-para | *:note-para" role="warning">
<report test=".[not(self::a:*) and not(self::b:*)]/text()[contains(.,'www.')]"
>URLs should be marked up with a url tag</report>
</rule>
</pattern>
从您的问题中不清楚同名元素是否可以出现在多个命名空间中。上面的代码假设可以在任何命名空间中使用相同的本地名称,并且将“a”和“b”前缀映射到您不想测试的命名空间的命名空间 URI。

关于namespaces - schematron:我可以对命名空间进行分组吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68406817/

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