我需要编写一个符合模式的XML文件。模式将元素的数据类型(恰好是Linux上的进程标识)强制为整数。
这段代码通过了验证 -
<pid datatype="int">123</pid>
但是,我不会事先知道“123”或进程ID,因此,我想写这样的东西 -
<pid datatype="int">*</pid>
显然这不起作用,因为*被视为字符串而不是整数。
我的问题是 - 有没有办法可以在XML文件中输入值来传递测试?
答案 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>