XSD Регулярное выражение рисунков: это или ничего

StackOverflow https://stackoverflow.com/questions/4227422

  •  26-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь определить правило схемы в XSD, для которой строка длиной 8 символов:

<PostedDate>42183296</PostedDate>

И космическое заполнение также разрешено:

<PostedDate>        </PostedDate>

который привел меня к XSD:

<xs:simpleType name="DateFormat">
   <xs:restriction base="xs:string">
      <xs:length value="8" />            //exactly 8 characters long
</xs:simpleType>

Но значение могу Также быть пустым (то есть нулевые символы длинные):

<PostedDate></PostedDate>
<PostedDate />

что привело меня к наивно, попробуй:

<xs:simpleType name="DateFormat">
   <xs:restriction base="xs:string">
      <xs:length value="8" />            //exactly 8 characters long
      <xs:length value="0" />            //exactly 0 characters long
</xs:simpleType>

Что из, конечно, не допускается.

Как часто бывает в случае в XSD, большинство форматов не могут быть легко представлены с помощью XSD, поэтому я решил попробовать правило регулярного выражения:

.{8} | ""

которые пытаются преобразовать в XSD i Type:

<xs:simpleType name="DateFormat">
    <xs:restriction base="xs:string">
        <xs:pattern value=".{8}|''" />
    </xs:restriction>
</xs:simpleType>

Но это не сработало:

''20101111' is not facet-valid with respect to pattern '.{8}|''' for type 'DateFormat'

Я также попробовал

  • <xs:pattern value="[0-9]{8}|''" />
  • <xs:pattern value="([0-9]{8})|('')" />
  • <xs:pattern value="(\d{8})|('')" />

Может кто-нибудь еще шаблон, который решает проблему, сопоставившись либо - некоторые конкретные шаблоны - пустые

Бонус: Кто-нибудь может указать на место в документация XSD что говорит это \d соответствует цифрам? Или какие другие специальные коды образцов?

Это было полезно?

Решение

Я могу догадаться, что ваттеры должны выглядеть как \d{8}| Это означает «восемь цифр или ничего», но не восемь цифр или две цитаты. Однако это не объясняет, почему 20101111 не совпадает. Вы уверены, что нет пробелов или других дополнительных символов в значении элемента?
\d Говорят, что соответствует цифрам в разделе «Класс персонажей F.1.1 Escapes»

Другие советы

Я также в той же ситуации, такой как пустая строка, допускается иначе она должна 6 длинных чисел. Наконец я использовал как следующее. Это работает для меня

<xs:simpleType name="DateFormat">
    <xs:restriction base="xs:string">
        <xs:pattern value="|[0-9]{8}" />
    </xs:restriction>
</xs:simpleType>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top