2009-09-27 60 views
2

我想允許一個元素的兩個屬性值。這就是我現在所做的事,但我只想讓2中的1個,但不是兩個。有沒有辦法讓'this'屬性或'this other'屬性,但不是兩個?

<contact phoneH="cell">8025550000</contact> 
<contact phoneW="work"> 8025550094</contact> 

我期待能夠做這樣的事情:

<xsd:attribute name="phoneH|phoneW" type="xsd:string" /> 

有沒有辦法做到使用帶屬性的限制因素?

感謝,
列維

回答

1

你不能用W3C xsd來做到這一點。

另一種方法是製作phoneH和phoneW子元素的聯繫人,並使用xs:choice將用戶限制爲一個或另一個子元素。

+0

好的。其實我剛剛讀了第二個選項,我通常會轉而採用這種方式,但這是一些非分級作業的一部分,所以我不想偏離要求太遠。但是,對於正常情況,選擇是一個很好的選擇。謝謝! – Levi 2009-09-27 19:32:02

1

我不相信,屬性約束是可能的XML模式。

你可以申請額外的驗證機制(即schematron),或使用一個不同的模式實現(即Relax-NG

http://lists.xml.org/archives/xml-dev/200107/msg00070.html

可惜你不能與 W3C XML Schema的做到這一點。當我看到它,你必須 兩種選擇:

1)更改爲一個不同的模式 話(我認爲RELAX-NG支持此 功能) 2)使用嵌入式 Schematron規則

表達你的 共同約束

這些約束條件可以通過 與新的Schematron驗證器從 Topologi驗證。該工具是免費的,可以從www.topologi.com下載 。

+0

好吧,我將不得不做一些閱讀這兩個。我知道這個學期在某個時候我的XML老師將會討論他們,但是在此之前有一些基礎知識可能會很好。 – Levi 2009-09-27 19:28:48

相關問題