XML:不能有提供架构的多个元素

时间:2016-11-16 23:12:38

标签: xml xsd

我现在对XML和学习XML Schema不熟悉。我遇到了无法使用提供的xml架构创建多个car元素的问题。

现在我有一个像这样的简单模式:

<?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元素,而我需要有多个。

当我尝试创建两个<car>元素时,它会给我一个错误,即元素cars在命名空间car中包含无效的子元素http://www.cars.lt

我尝试将CarType复杂类型插入cars元素,但它给了我同样的错误。

1 个答案:

答案 0 :(得分:1)

maxOccurs的默认值为1。如果您希望XSD允许多个car元素,请添加maxOccurs,其值大于1unbounded

<xs:element name="car" type="carsType:CarWithBrandAndModel" maxOccurs="unbounded">