Атрибут XSD не может равняться значению? - PullRequest
2 голосов
/ 18 января 2011

Как я могу ограничить атрибут, чтобы не разрешить определенное значение?

Например, у меня есть <xs:key/> для атрибута Id элемента, но некоторые Yahoo ушли и бросили магиючисло там, так что теперь я не могу разрешить 3, но 1, 2 и 5 вполне приемлемы.

Ответы [ 4 ]

3 голосов
/ 19 января 2011

Вы пытались взглянуть на тег ограничения текст ссылки , код ниже, он должен дать вам тег с именем Id, который допускает только целые числа, которые не начинаются с 3

<xs:key name="Id">
    <xs:simpleType>
        <xs:restriction base="xs:integer">
            <xs:pattern value="[^3]\d*"/>
       </xs:restriction>
  </xs:simpleType>
</xs:key>
0 голосов
/ 21 августа 2012

Если ваши идентификаторы целые, и вы хотите разрешить любое целое число, кроме 3, ваша лучшая ставка (как мне кажется) - это не регулярные выражения в шаблонах, потому что, как заметили другие комментаторы, легко случайно оставить дыры, но определитьподтип целых чисел для целых чисел меньше 3, а другой для целых чисел, больших, чем дерево, а затем определить их объединение.Ваш атрибут получает тип объединения.И вуаля, вы принимаете любое целое число, кроме 3. Все, что вам нужно сделать, это выследить человека, который делает 3 магии, и убедиться, что они не добавляют больше магических чисел.

В XSD 1.1 вы также можетеобойти эту неловкость, добавив утверждение, которое ограничивает значение не равным 3.

0 голосов
/ 09 февраля 2011

Я думаю, что лучше шаблон [^3]|..+, который принимает все числа, по крайней мере, с 2 цифрами. Тем не менее, он все еще позволяет 03, что является еще одним представлением 3. Чтобы запретить это, вы можете попробовать что-то вроде [^3]|[^0].+, которое запрещает все представления с ведущими нулями.

0 голосов
/ 19 января 2011

Вы можете указать ограничения, используя регулярные выражения . Взгляните на этот учебник

...