2015-06-16 3 views
1

Ошибка:Ошибка проверки в схеме XML для ComplexType

s4s-elt-must-match.1: The content of 'viviendas' must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*)). A problem was found starting at: complextype.

Схема:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns="http://wwww.vivienda.io" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.vivienda.io"> 
    <xs:element name="viviendas"> 
    <xs:complextype> 
     <xs:sequence maxoccurs="unbounded"> 
     <xs:element name="vivienda" minoccurs="1"> 
      <xs:complextype> 
      <xs:sequence> 
       <xs:element name="direccion"> 
       <xs:complextype> 
        <xs:sequence> 
        <xs:element name="calle"></xs:element> 
        <xs:element name="numero"></xs:element> 
        <xs:element name="localidad"></xs:element> 
        <xs:element name="provincia"></xs:element> 
        </xs:sequence> 
       </xs:complextype> 
       </xs:element> 
       <xs:element name="refCatastral"></xs:element> 
       <xs:element name="habitaciones"> 
       <xs:complextype> 
        <xs:sequence> 
        <xs:element name="habitacion" minoccurs="1"> 
         <xs:complextype> 
         <xs:attribute name="area" use="required" type="xs:string"> 
          <xs:complextype> 
          <xs:restriction base="xs:integer"> 
           <xs:mininclusive value="1"/> 
           <xs:maxlength value="2"/> 
          </xs:restriction> 
          </xs:complextype> 
         </xs:attribute> 
         <xs:attribute name="tipo" use="required" > 
          <xs:complextype> 
          <xs:restriction base="xs:string"> 
           <xs:pattern value="salon|cocina|baño|dormitorio"/> 
          </xs:restriction> 
          </xs:complextype> 
         </xs:attribute> 
         </xs:complextype> 
        </xs:element> 
        </xs:sequence> 
       </xs:complextype> 
       </xs:element> 
       <xs:element name="servicios"> 
       <xs:complextype> 
        <xs:sequence> 
        <xs:element name="servicio" minoccurs="1"></xs:element> 
        </xs:sequence> 
       </xs:complextype> 
       </xs:element> 
      </xs:sequence> 
      </xs:complextype> 
     </xs:element> 
     <xs:element name="comprador" minoccurs="0" maxoccurs="1"> 
      <xs:complextype> 
      <xs:attribute name="dni" use="required"> 
       <xs:simpletype> 
       <xs:restriction base="xs:string"> 
        <xs:pattern value="[0-9]{9}[A-Z]{1}"/> 
       </xs:restriction> 
       </xs:simpletype> 
      </xs:attribute> 
      <xs:sequence> 
       <xs:element name="nombre"></xs:element> 
       <xs:element name="edad" > 
       <xs:simpletype> 
        <xs:restriction base="xs:integer"> 
        <xs:mininclusive value="1"/> 
        </xs:restriction> 
       </xs:simpletype> 
       </xs:element> 
       <xs:element name="ref_catastral"></xs:element> 
      </xs:sequence> 
      </xs:complextype> 
     </xs:element> 
     </xs:sequence> 
    </xs:complextype> 
    </xs:element> 
</xs:schema> 
+2

Привет @Salve, добро пожаловать в StackOverflow! На этот раз я исправил несколько вопросов в вашем сообщении, но в будущем обязательно сделайте следующее: (1) Не используйте теги в заголовках вопросов; (2): попытайтесь сделать свой заголовок вопроса ясным указанием на вашу проблему; (3): не размещайте ссылки на контент/код, просто отправьте код напрямую –

ответ

3

XML теги чувствительны к регистру. complexType! = complextype. Вам нужно исправить это во всей вашей схеме - он ожидает найти <xs:complexType>, но вместо этого найдет <xs:complextype>, что недопустимо.

Похоже, что у вас будут подобные проблемы в другом месте - например, simpleType, maxLength - это другие теги, которые имеют разные оболочки, чем имена нижних регистров, которые вы использовали в своей схеме. Когда вы исправляете каждую ошибку, ваше программное обеспечение проверки должно указывать следующую ошибку.

+0

Это правильно (+1), но только первый из многих вопросов, которые необходимо устранить с помощью XSD OP. – kjhughes

+0

Я пошел дальше и предоставил [полный список ошибок и исправлений] (http://stackoverflow.com/a/30876231/290085) в другом ответе. – kjhughes

+0

Я несколько надеялся укрепить отношение к исследованиям, но у меня также, вероятно, не хватает знаний, которые у вас есть у вас под рукой;) –

2

Как указано в поле Dan Field, вы должны позаботиться о футляре в complexType (а также во всех именах XSD-элементов). Однако в вашем XSD есть еще много проблем. Вот полный список, а затем полностью исправленной XSD:

  1. xs:complextype ->xs:complexType
  2. maxoccurs ->maxOccurs
  3. minoccurs ->minOccurs
  4. xs:attribute не может иметь xs:complexType ребенка.
  5. mininclusive ->minInclusive
  6. maxlength ->maxLength но maxLength не может появиться как фаской к ограничения на xs:integer; изменено на maxInclusive="99".
  7. xs:string не может быть указан на xs:attribute, а также спецификация местного типа через xs:simpleType.
  8. xs:simpleType ->xs:simpleType
  9. xs:attribute должен появиться после, не раньше, xs:sequence.

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

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns="http://wwww.vivienda.io" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://www.vivienda.io"> 
    <xs:element name="viviendas"> 
    <xs:complexType> 
     <xs:sequence maxOccurs="unbounded"> 
     <xs:element name="vivienda" minOccurs="1"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="direccion"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="calle"></xs:element> 
        <xs:element name="numero"></xs:element> 
        <xs:element name="localidad"></xs:element> 
        <xs:element name="provincia"></xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="refCatastral"></xs:element> 
       <xs:element name="habitaciones"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="habitacion" minOccurs="1"> 
         <xs:complexType> 
         <xs:attribute name="area" use="required"> 
          <xs:simpleType> 
          <xs:restriction base="xs:integer"> 
           <xs:minInclusive value="1"/> 
           <xs:maxInclusive value="99"/> 
          </xs:restriction> 
          </xs:simpleType> 
         </xs:attribute> 
         <xs:attribute name="tipo" use="required" > 
          <xs:simpleType> 
          <xs:restriction base="xs:string"> 
           <xs:pattern value="salon|cocina|baño|dormitorio"/> 
          </xs:restriction> 
          </xs:simpleType> 
         </xs:attribute> 
         </xs:complexType> 
        </xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="servicios"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="servicio" minOccurs="1"></xs:element> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element name="comprador" minOccurs="0" maxOccurs="1"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="nombre"></xs:element> 
       <xs:element name="edad" > 
       <xs:simpleType> 
        <xs:restriction base="xs:integer"> 
        <xs:minInclusive value="1"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="ref_catastral"></xs:element> 
      </xs:sequence> 
      <xs:attribute name="dni" use="required"> 
       <xs:simpleType> 
       <xs:restriction base="xs:string"> 
        <xs:pattern value="[0-9]{9}[A-Z]{1}"/> 
       </xs:restriction> 
       </xs:simpleType> 
      </xs:attribute> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 
Смежные вопросы