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

时间:2008-11-12 11:03:54

标签: xsd schematron

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

我们想要添加一些规则;但导致我出现问题的是,必须存在一个“node”元素,其中“name”属性=“Problem”。

所以这是有效的:

<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>

因此,总而言之,我需要执行的规则是

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

有任何想法吗?

1 个答案:

答案 0 :(得分:1)

很抱歉,XSD无法实现。

由于性能原因,XML-Schema旨在永远不会向前看,永远不会超越当前节点。这意味着必须始终定义验证器在架构树中的位置。这使得这样的要求无法用XSD定义。