基于属性限制元素值

时间:2010-03-04 15:04:50

标签: xml xsd

我想根据属性的值限制Element的类型,如下所示:

<数据类型=“小数”>     44.00 < /数据与GT;

<数据类型=“日期”>     2008-02-01 < /数据与GT;

可以定义一个这样做的架构吗?

1 个答案:

答案 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的情况下,你不会得到如此方便和用户友好的工具。