2017-01-13 42 views
-1

我有一個簡單的XML這樣的:XML文檔類型定義 - >只允許不同的值

<whiskey> 
    <taste></taste> 
    <taste></taste> 
</whiskey> 

現在用戶只允許插入一些不同的口味我的問題是 - >我怎麼能請確保用戶只能輸入2個不同的vavalues,而不是相同的DTD文件...?

感謝您的幫助!

greetz

+0

我的dtd目前看起來像這樣:---------- <!ELEMENT Whiskey(Taste,Taste +)> -------------什麼意思是至少2口味,但也可能更多...但我怎麼能確定,Taste1和Taste2不一樣? – nbg15

回答

1

使用DTD不能確保所有元素都有不同的值。實際上,你不能使用XML Schema或Relax NG等最廣泛使用的XML類型定義語言。

但是,還有基於斷言的類型定義語言,如Schematron,您可以在其中指定必須由XML文檔驗證的不變量。在Schematron中,這些斷言是使用XPath編寫的。

+0

確實XSD不能要求「所有元素」具有不同的值;不符合OP的要求(給定'whiskey'元素中的所有'taste'元素具有不同的值)不能由XSD執行。 –

+0

您能否舉一個XSD示例來驗證2個元素內容不同但不相同的文檔,但如果它們相同則不會驗證它們? – jpleal

+0

當然;定義該詞彙的威士忌和口味,並添加威士忌元素範圍內的唯一性約束,指向兒童口味元素。 –