XML Schema-如何匹配任何整数?

时间:2011-12-08 04:08:05

标签: xml xsd integer xml-validation

我需要编写一个符合模式的XML文件。模式将元素的数据类型(恰好是Linux上的进程标识)强制为整数。

这段代码通过了验证 -

<pid datatype="int">123</pid>

但是,我不会事先知道“123”或进程ID,因此,我想写这样的东西 -

 <pid datatype="int">*</pid>

显然这不起作用,因为*被视为字符串而不是整数。

我的问题是 - 有没有办法可以在XML文件中输入值来传递测试?

编辑 - 这是模式 - http://oval.mitre.org/language/version5.10/ovaldefinition/documentation/unix-definitions-schema.html#process58_object

3 个答案:

答案 0 :(得分:2)

完成架构定义后, pid 可以为空或可以包含数值。因此,如果没有要传递的数据,则只需将其指定为<pid datatype="int"></pid><pid />

答案 1 :(得分:1)

如果要允许整数或星号,请更改架构以使用如下类型:

<xs:element name="pid">
  <xs:simpleType>
    <xs:union>
      <xs:simpleType ref="xs:integer"/>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="*"/>
        </
      </
    </
  </
</

答案 2 :(得分:0)

也许您还可以使用正则表达式在XSD中定义一个简单类型,如下所示:

<!-- definition of simple types -->
<simpleType name="pidType">
    <annotation>
        <documentation>A number or *</documentation>
    </annotation>
    <restriction base="string">
        <pattern value="\d+|\*{1}" />
    </restriction>
</simpleType>

然后你可以使用它:

<element name="pid" type="tns:pidType"></element>