XSD - 如何确保具有给定属性的特定元素的存在?

发布于 2024-07-09 09:43:15 字数 702 浏览 8 评论 0原文

我正在尝试向 jdpl 流程定义文件添加额外的验证使用 XSD。

我们想要添加一些规则; 但给我带来问题的是,必须存在一个“节点”元素,其“名称”属性=“问题”。

所以这是有效的:

<process-definition name='sample'>
    <node name="Problem">
    </node>
    <node name="Do Work">
    </node>
</process-definition>

而这不是

<process-definition name='sample'>
    <node name="Do Work">
    </node>
</process-definition>

所以,总而言之,我需要执行的规则是

  • 节点属性的值为“Problem”,
  • 存在 1 个名称为“Problem”的节点
  • ,允许任意数量的具有其他名称的节点

任何想法在那里?

I'm trying to add extra validation to jdpl process-definition files using XSD.

We have a couple of rules we want to add; but the one that's causing me problems is that there must exist one "node" element with it's "name" attribute = "Problem".

so this is valid:

<process-definition name='sample'>
    <node name="Problem">
    </node>
    <node name="Do Work">
    </node>
</process-definition>

and this isn't

<process-definition name='sample'>
    <node name="Do Work">
    </node>
</process-definition>

So, to summarise, the rules I need to enforce are

  • node attribute having the value "Problem"
  • existence of 1 node with name="Problem"
  • allowing any number of nodes with other names

Any ideas out there?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

木落 2024-07-16 09:43:15

抱歉,XSD 无法实现这一点。

由于性能原因,XML-Schema 被设计为从不向前看,也不向后看超出当前节点的位置。 这意味着它必须始终定义在模式树中验证器所在的位置。 这使得这样的需求无法使用 XSD 来定义。

Sorry that's not possible with XSD.

Due to performance reasons XML-Schema is designed to never look ahead and never look back beyond the current node. That means that it must always be defined where the validator is in the schema-tree. And that makes requirements like this impossible to define with XSD.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文