2014-03-05 81 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>