2015-09-04 109 views
0

我有一個需要使用模式,通過一個漂亮的剛性驗證去的XML。 問題在於某些元素的某些屬性只有在「type」屬性具有某個值時才需要。基於其他屬性的屬性條件存在值

例如:

<someElement type="foo" att1="bla" /> 
<someElement type="bar" att1="blu" /> 

在我的情況下,type="foo"應該驗證罰款,但對於type="bar"它不應該,因爲「欄中的」其他屬性att2必須存在。

這種事情甚至可以使用模式,或者我需要聲明一個新的complexType而不是<someElement>,它只會允許我需要的東西?

我嘗試了「類似的問題」一節,但無法找到的東西,專門解決這個問題。

回答

1

你所描述什麼是非常精確匹配的XSD 1.1「條件類型分配」機制(其中一個屬性的值是用來決定對其驗證這幾種類型的)。

有沒有在XSD 1.0這樣的方式。

+0

有如何被實現的地方的例子?我嘗試閱讀XSD規範,這讓我哭了起來。 –

+0

有一些介紹性的教程,例如http://www.ibm.com/developerworks/xml/library/x-xml11pt2/。對不起,我誤導你的搜索引擎錯誤:它是「條件類型分配」。 (編輯來糾正它)。 –

+1

如果有任何安慰,我認爲XSD規範是自Algol 68報告以來我讀到的最困難的事情;顯着差異在於Algol 68中的形式主義確實有效,而即使您掌握了XSD規範,您也會發現很多問題沒有得到答案。 –