2011-11-23 24 views
0

是否有一種方法可以根據爲另一個元素輸入的枚舉值來要求元素?根據枚舉值需要XML Schema元素

基本上,我想要做的是有一個由枚舉定義的用戶界面類型。根據接口類型的不同,可能需要也可能不需要一些字段。

我知道這可以通過將元素設置爲可選項並處理代碼中的條件邏輯或通過針對每種可能的接口類型製作不同的複雜類型來實現。但是,我希望規則對任何閱讀架構的人都很明顯,因此Code解決方案並不理想,並且添加大量複雜類型(儘管他們共享大多數必需字段)會增加更多到XML解析邏輯。

是否有可能在模式中包含所有這些邏輯來簡化驗證和解析?

回答

1

這種條件強制/可選元素包含在XSD中是不可能的。

0

你可以使用RelaxNG來做到這一點。

您將擁有一個良好的技術數據接口與這種類型的模式(描述確切的結構,你需要一個工具,如Jing驗證)。然後,如果要使用對象映射,則可以使用Trang將RelaxNG模式轉換爲XML模式(XML模式稍微鬆弛一些,真正的數據接口在RelaxNG中進行了描述)。然後,您可以使用Trang將RelaxNG模式轉換爲XML模式。

+0

感謝您的提示。我將研究RelaxNG,但現在我將堅持使用標準XML模式,因爲我設計的模式旨在暴露給第三方開發人員。我想堅持使用行業標準模式格式,而不是讓他們學習新的東西,即使它應該在語法上簡單易懂。儘管如此,我一定會牢記內部模式。 – mnemy