2014-03-05 128 views
2

我已经创建了一个XML模式,其中某些元素使用了MaxOccurs和MinOccurs,但是当我尝试验证它时,出现了“91 s4s-att-not-允许:属性'MaxOccurs'不能出现在元素'element'中。“XML Schema MaxOccurs和MinOccurs未验证

下面是我的元素之一的例子:他们提到,它需要在一个序列

从以前的帖子。我很确定我已经完成了。

回答

3

你有两个问题,至少:

1)错误

Attribute 'MaxOccurs' cannot appear in element 'element'." 

解释这一切。这是maxOccurs。案件事宜。

2)您正在将enginesize元素定义为简单类型(type="integer"),同时将其定义为复杂类型(嵌套<complexType>)。你不能拥有他们两个。

如果您想要一个enginesize元素具有一个属性并且也接受一个整数作为简单内容,您必须将其定义为具有简单内容,并使用扩展来添加该属性。

我相信你想实现的是这样的:

<xsd:element name="enginesize" maxOccurs="2"> 
    <xsd:complexType mixed="true"> 
     <xsd:simpleContent> 
      <xsd:extension base="xsd:integer"> 
       <xsd:attribute name="unit" use="required"> 
        <xsd:simpleType> 
         <xsd:restriction base="xsd:string"> 
          <xsd:enumeration value="CC"/> 
          <xsd:enumeration value="CL"/> 
         </xsd:restriction> 
        </xsd:simpleType> 
       </xsd:attribute> 
      </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 
</xsd:element>