当我尝试验证XSD文档时出现问题

时间:2019-06-12 17:27:21

标签: xml xsd xsd-validation

当我在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 个答案:

答案 0 :(得分:2)

您的问题是,您用两种类型定义了元素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>

一切都会按要求进行。