Ограничить только числовые символы в XSD в элементе переменного размера - PullRequest
2 голосов
/ 16 сентября 2010

У меня есть следующий XML:

<customer>
  <name>John Paul</name>
  <cpf_cnpj>1376736333334</cpf_cnpj>
</customer>

Элемент <cpf_cnpj> должен иметь минимальный размер 11 и максимальный размер 15, и в нем могут быть только числовые (от 0 до 9) символы. Мой XSD выглядит так:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="customer">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="cpf_cnpj" minOccurs="1" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:minLength value="11"/>
              <xs:maxLength value="15"/>
              <xs:pattern value="[0-9]{15}"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Моя проблема в том, что на узле xs:pattern я не знаю, что использовать, потому что, несмотря на то, что у меня minLenght 11 и maxLenght 15, из-за {15} XML не анализ, если есть значение от 11 до 14
Как я могу иметь переменный размер от 11 до 15 и применять только числовые символы для этого узла?
Tks!

Ответы [ 2 ]

4 голосов
/ 16 сентября 2010

Попробуйте это <xs:pattern value="[0-9]{11-15}"/>

РЕДАКТИРОВАТЬ

Попробуйте это (исправлено):

<xs:pattern value="[0-9]{11,15}"/>
1 голос
/ 16 сентября 2010

Я только что протестировал следующий шаблон

<xs:pattern value="[0-9]+" />

, и это сработало для меня.В основном, используйте шаблон, чтобы разрешить любую длину чисел, а затем используйте строки minLength и maxLength, чтобы задать длину.

Таким образом, XSD в вашем примере будет:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="customer">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="cpf_cnpj" minOccurs="1" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:minLength value="11"/>
              <xs:maxLength value="15"/>
              <xs:pattern value="[0-9]+"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...