2010-06-14 70 views
1

我有以下XML序列如何使用XSD枚舉驗證XML屬性?

<property name="a" value="x" /> 
<property name="b" value="xx" /> 

我想限制"a"到的值的列表,如[X,Y,Z]和"b"像[XX,YY,ZZ]

另一個列表

是否可以使用XSD來做到這一點,如果它是如何?

如果這是不可能的,您如何建議更改XML格式以便爲XSD驗證做好準備? (我確實有兩個以上的property名稱/值對)

回答

1

XSD使用嵌套完成你想要的(條件驗證)。

因此,儘管你不能使用XSD使一個值屬性條件時的另一個值(如Fyodor Soikin says in his answer),你可以使用XSD進行屬性的對元件的自身條件的值:

<propertyNameA value="x"/> 
<propertyNameB value="xx"/> 

在這種情況下,每個屬性都是自己的元素,每個「value」屬性都有自己的枚舉。

它給你增加的好處是能夠限制你可以擁有的每個命名屬性的數量,但缺點是你需要管理更多的元素。

根據您的具體情況,以這種方式使用XSD可能是最佳選擇,或者實現可以執行所需名稱/值驗證的另一個系統可能會更好。

+0

謝謝,無論如何,通過發明另一個驗證系統/工具來重塑車輪並不是一個好主意。如果可能的話,修復舊格式並使其準備好XSD要好得多。 – sorin 2010-06-14 13:50:42