XML模式:特定元素的某些子元素的keyref

XML模式:特定元素的某些子元素的keyref,xml,xsd,Xml,Xsd,我需要为此XML语言编写一个XML模式: <wfInfo> <worflow name="wf1"> <action name="act1" role="seller"/> <action name="act2" role="buyer"/> ... </workflow> <workflow name="wf2"> ... </wor

我需要为此XML语言编写一个XML模式:

<wfInfo>
   <worflow name="wf1">
       <action name="act1" role="seller"/>
       <action name="act2" role="buyer"/>
       ...
   </workflow>

   <workflow  name="wf2">
       ...
   </workflow>

   <process workflow="wf1">
       <actionStatus action="act2" takenInCharge="true"/>
   </process> 

   <process ...> ... </process>
   ...
</wfInfo>

...
...
... 
...
我几乎成功地编写了模式的每一部分,包括大多数key和keyref元素。 不管怎么说,有一个限制我似乎不能写。我想让actionStatus元素的属性“action”指向正确的操作,而不是文档中的任何操作。我的意思是,在这种情况下,在验证过程中,应该验证动作“act2”是否存在于工作流“wf1”中,而不是任何工作流中。是否可以使用W3CXML模式语言


谢谢,任何答案都将不胜感激

您可以使用key/keyref-但这可能会变得相当混乱

更好的方法可能是使用W3CXMLSchema之外的另一种技术。例如,Schematron可以与模式结合使用,并且易于添加和理解。或者,在代码中实现这种依赖关系也很容易


另外,请参见:

谢谢您的回答。不幸的是,我不能使用schematron,因为这是一项大学作业,我应该严格地只使用W3CXMLSchema。无论如何,谢谢你的建议,我一定会看看Schematron的个人知识!我不确定是否可以在不改变底层XML结构的情况下使用纯XML模式来完成所需的工作。看:是的,我已经看到了你链接的问题。实际上,最后我决定更改我的XML格式,以便让流程元素及其actionStatus在工作流中。我更愿意将工作流程和流程分开,但我想这也是一个很好的解决方案。无论如何,非常感谢你的回答!