Проблема, когда я пытаюсь проверить документ XSD - PullRequest
1 голос
/ 12 июня 2019

Когда я накладываю ограничение на свой документ XSD для метки "число" (цифра), когда я проверяю его, я получаю ошибку.Если я сниму ограничение, документ XSD будет проверен.Есть идеи?

<?xml version="1.0" encoding="UTF-8"?>
<alumno dni="12345678A"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:noNamespaceSchemaLocation="alumno.xsd">
  <nombre>Juan Garcia</nombre>
  <direccion>
    <calle>Avenida de la Fuente</calle>
    <numero>6</numero>
    <ciudad>Zafra</ciudad>
    <provincia>Badajoz</provincia>
  </direccion>
  <telefono>924555555</telefono>
  <telefono>658741236</telefono>
</alumno>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="alumno">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="nombre"/>
        <xs:element name="direccion">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:string" name="calle"/>
              <xs:element type="xs:byte" name="numero"/>
              <xs:simpleType>
                <xs:restriction base="xs:integer">
                    <xs:minExclusive value="0"/>
                    <xs:maxExclusive value="500"/>
                </xs:restriction>
                </xs:simpleType>
              <xs:element type="xs:string" name="ciudad"/>
              <xs:element type="xs:string" name="provincia"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element type="xs:int" name="telefono" maxOccurs="unbounded" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute type="xs:string" name="dni"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

1 Ответ

2 голосов
/ 12 июня 2019

Ваша проблема в том, что вы определили элемент numero с двумя типами: вы определили его как xs:byte и одновременно попытались создать xs:simpleType (границы которого также превышают ограничение байта) , Также вы не включили xs:simpleType в определение xs:element.

Так что исправьте определение элемента numero в

<xs:element name="numero">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:minExclusive value="0"/>
          <xs:maxExclusive value="500"/>
      </xs:restriction>
    </xs:simpleType>
</xs:element>

и все будет работать как нужно.

...