2011-12-08 30 views
1

我需要编写一个符合模式的XML文件。该模式强制元素的数据类型(恰巧是Linux上的进程ID)是一个整数。XML Schema-如何匹配任何整数?

代码的这个片段通过validation-

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

不过,我不知道“123”或进程ID事前,正因为如此,我想写点东西像这 -

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

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

我的问题是 - 有没有一种方法可以在XML文件中输入值哪个可以通过测试?这里

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

+0

分享你的模式......如果模式被编写为期望数字数据类型,那么就没有办法绕过... –

+0

已更新链接 – user837208

回答

2

通过模式定义去后,PID可以是空的,也可以包含一个数值。所以,如果没有在那么只需将其指定为<pid datatype="int"></pid><pid />

1

如果你想允许整数或星号,将模式改为使用类型这样需要传递的数据:

<xs:element name="pid"> 
    <xs:simpleType> 
    <xs:union> 
     <xs:simpleType ref="xs:integer"/> 
     <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="*"/> 
     </ 
     </ 
    </ 
    </ 
</ 
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>