2010-03-04 59 views
1

元素值I要基於一個屬性的值,以限制一個元素的類型,如下所示:限制基於屬性

<數據類型=「小數」 > 44.00 < /數據>

<數據類型= 「日期」 > 2008-02-01 < /數據>

燦Schema被定義爲這樣嗎?

回答

0

這是一個衆所周知的事實是,XML-Schema不能做到這一點,基於其他元素的元素

驗證被視爲不明確,所以不可能。但是,如果你願意,你可以驗證兩種類型的數據類型,忽略條件驗證,如下所示:

定義一個帶有自定義名稱的新數據類型,然後複製粘貼下面寫的模式。

<xs:simpleType name="new_type"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="(([0-9]+)[.]([0-9]+))|(([0][1-9]|[1][0-2])/([0][1-9]|[1-2][0-9]|[3][0-1])/[1-2][0-9][0-9][0-9])"/> 
    </xs:restriction> 
    </xs:simpleType> 

這將接受型小數或日期的數據,但你不能與屬性值進行驗證,

的替代解決方案是使用Schematron的,但你也不會這麼方便和用戶對於XSD和XSLT來說,這是一款友好的工具。