2010-03-04 51 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来说,这是一款友好的工具。