我想根据属性的值限制Element的类型,如下所示:
<数据类型=“小数”> 44.00 < /数据与GT;
<数据类型=“日期”> 2008-02-01 < /数据与GT;
可以定义一个这样做的架构吗?
答案 0 :(得分: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的情况下,你不会得到如此方便和用户友好的工具。