通过XSD限制XML属性内容

通过XSD限制XML属性内容,xml,xsd,types,Xml,Xsd,Types,我有一些这样的XML: <sometag datatype="xs:string" .../> <sometag datatype="xs:int" .../> 可以看到,属性“datatype”的内容应该引用基本的XML数据类型。目前,我正在使用一些自定义的simpleType,如下所示: <xs:simpleType name="contentDataType"> <xs:restriction base="xs:string">

我有一些这样的XML:

<sometag datatype="xs:string" .../>
<sometag datatype="xs:int" .../>

可以看到,属性“datatype”的内容应该引用基本的XML数据类型。目前,我正在使用一些自定义的simpleType,如下所示:

<xs:simpleType name="contentDataType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="string"/>
    <xs:enumeration value="int"/>
    <xs:enumeration value="boolean"/>
    <xs:enumeration value="float"/>
  </xs:restriction>
</xs:simpleType>

有没有办法通过XSD将内容限制为XML基本类型的名称?

XML数据类型的名称本身并不是数据类型,因此枚举几乎是实现这一点的唯一方法—那一个或正则表达式。无论哪种方式,您都需要提供一个基于字符串的限制,该限制只允许值列表,或者提供一个过滤器,该过滤器只允许通过这些值。我选择枚举纯粹是为了克拉丽丝