2011-12-08 1 views
1

Мне нужно написать XML-файл, который должен соответствовать схеме. Схема наделяет тип данных элемента (как идентификатор процесса в Linux) целым числом.XML-схема - как сопоставить любое целое число?

Этот фрагмент кода передает validation-

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

Однако, я не знаю «123» или идентификатор процесса заранее, как таковой, я хочу написать что-то вроде this-

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

Очевидно, что это не работает, поскольку * рассматривается как строка, а не целое число.

Мой вопрос: есть ли способ ввести значение в файл XML, который пройдет тест?

Edit- вот схе- 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>