2016-11-16 2 views
1

Я сейчас новичок в XML и изучаю XML-схему прямо сейчас. Я столкнулся с проблемой, когда я не могу создать более одного элемента car с предоставленной схемой xml.XML: не может иметь несколько элементов с предоставленной схемой

Сейчас у меня есть простая схема, как это:

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://www.cars.lt" 
      xmlns="http://www.cars.lt" 
      elementFormDefault="qualified" 
      xmlns:carsType="http://www.cars.lt"> 

    <xs:element name="cars" type="carsType:CarType"> 
    </xs:element> 

    <xs:complexType name ="CarType"> 
    <xs:sequence> 
     <xs:element name="car" type="carsType:CarWithBrandAndModel"> 
     <xs:key name="carKey"> 
      <xs:selector xpath="car"/> 
      <xs:field xpath="@id"/> 
     </xs:key> 
     <xs:keyref name="NoCarsRef" refer="carKey"> 
        <xs:selector xpath="noCar" /> 
        <xs:field xpath="@id" /> 
       </xs:keyref> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 

Эта схема генерирует только один автомобиль элемент, когда вместо того, чтобы мне нужно больше, чем один.

И когда я пытаюсь создать два <car> элементов он дает мне ошибку, что элемент cars имеет недопустимый дочерний элемент car в пространстве имен http://www.cars.lt.

Что я пытался было вставить тип CarType complex в элемент cars, но он дает мне ту же ошибку.

ответ

1

По умолчанию для maxOccurs является 1. Если вы хотите, чтобы ваш XSD разрешить несколько car элементов, добавьте maxOccurs со значением больше, чем 1 или unbounded:

<xs:element name="car" type="carsType:CarWithBrandAndModel" maxOccurs="unbounded"> 
Смежные вопросы