2011-11-05 112 views
0

我需要为此编写XML语言XML架构:XML模式:keyref到特定元素的某些子元素

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

我设法模式的几乎每一个部分,包括最关键的和keyref元素写。 无论如何,我似乎无法写出一个约束条件。我想将元素actionStatus指向的属性“action”设置为正确的操作,而不是文档中的任何操作。我的意思是,在这种情况下,在验证过程中,应验证工作流程“wf1”中存在操作“act2”,而不是任何工作流程中。有可能使用W3C XML Schema语言?

谢谢,任何回答将非常感激

回答

1

您可以使用键/ keyref - 但这可能会得到相当混乱。

更好的方法可能是使用W3C XML Schema以外的其他技术。例如,Schematron可以与模式结合使用,并且易于添加和理解。另外,它可以很容易地在代码中实现这种依赖关系。

另外,请参阅:Restrict ID references to a particular element group

+0

感谢您的答案。不幸的是,我不能使用schematron,因为这是一个大学任务,我应该严格使用W3C XML Schema。无论如何,感谢您的建议,我一定会看看Schematron的个人知识! –

+0

我不确定是否有可能在不更改基础XML结构的情况下使用纯XML模式执行您所需的操作。请参阅:http://stackoverflow.com/questions/891324/xsd-key-keyref-hierarchical-key-structure – kennethmay

+0

是的,我已经看到你链接的问题。实际上,最终我决定改变我的XML格式,以便在工作流程中拥有进程元素和他们的actionStatus。我宁愿保持工作流程和流程分离,但我想这也是一个很好的解决方案。无论如何,感谢你的答案! –

相关问题