【问题标题】:XML Schema: keyref to some subelements of a specific elementXML Schema:特定元素的某些子元素的 keyref
【发布时间】:2011-12-22 18:26:12
【问题描述】:

我需要为这种 XML 语言编写一个 XML Schema:

<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”中,而不是任何工作流中。是否可以使用 W3C XML Schema 语言?

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

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    您也许可以使用 key/keyref - 但这可能会变得非常混乱。

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

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

    【讨论】:

    • 感谢您的回答。不幸的是,我不能使用 schematron,因为这是大学作业,我应该只严格使用 W3C XML Schema。无论如何,感谢您的建议,我一定会看看 Schematron 以获取个人知识!
    • 我不确定是否可以在不更改底层 XML 结构的情况下使用纯 XML 模式来做您需要的事情。见:stackoverflow.com/questions/891324/…
    • 是的,我已经看到了你链接的问题。实际上,最后我决定更改我的 XML 格式,以便在工作流中包含流程元素及其 actionStatus。我更愿意将工作流程和流程分开,但我想这也是一个很好的解决方案。非常感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 2014-09-08
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多