XSD - 如何确保具有给定属性的特定元素的存在?
我正在尝试向 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
抱歉,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.