2011-11-05 130 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。我寧願保持工作流程和流程分離,但我想這也是一個很好的解決方案。無論如何,感謝你的答案! –