發現我有一個XML模式片段是這樣的:XML架構無效的內容與預期的元素
<xsd:complexType name="CustomStreamHandlerConfig">
<xsd:complexContent>
<xsd:extension base="AbstractStreamHandlerConfig">
<xsd:choice>
<xsd:sequence>
<xsd:element name="class" type="xsd:string" />
<xsd:group ref="CustomParameters" />
<xsd:group ref="NextElements" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:element name="config-file" type="xsd:anyURI" />
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
基本上,這種模式允許XML片段來描述一些參數(類,自定義參數CustomStreamHandlerConfig
,等等)或配置文件的URI。
的CustomParameters
組允許在任何數量的single-params
元素和multiple-params
在任何數量的清單列表:
<xsd:group name="CustomParameters">
<xsd:sequence>
<xsd:element name="single-params" type="KeyValue" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="multiple-params" type="KeyMultipleValues" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:group>
的KeyValue
和KeyMultipleValues
複雜類型是這樣的:
<xsd:complexType name="KeyValue">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="key" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="KeyMultipleValues">
<xsd:sequence>
<xsd:element name="value" minOccurs="2" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="key" type="xsd:string" use="required" />
</xsd:complexType>
當我嘗試組裝一個代表CustomStreamHandlerConfig
的XML片段:
<custom-stream-retriever>
<class>MyCustomStreamHandler</class>
<single-params key="single-key">single-value</single-params>
<mutiple-params key="multiple-key"> <!-- Invalid content -->
<value>multiple-value</value>
<value>multiple-value</value>
</mutiple-params>
</custom-stream-retriever>
我收到一個cvc-complex-type.2.4.a: Invalid content was found starting with element 'mutiple-params'.
錯誤。
的事情是,當我檢查預期元素的列表中,我發現:One of '{..., "SomeNamespace":multiple-params, ...}' is expected.
我比較SomeNamespace
(例如命名空間名稱)在我的模式文件中的targetNamespace
,他們都是一樣的。我還必須精確地說明xsd:schema
標籤有elementFormDefault="qualified"
。
爲什麼XML文件拒絕mutiple-params
元素?
我想說你是對的。錯誤表示「發現......」多重參數「......預期多重參數」。 – Dijkgraaf
是的,就是這樣...我的ctrl + space自動完成在Eclipse中必須使用以前版本的XSD文件,因爲刷新問題。 –
不能相信我雖然沒有看到拼寫差異......非常感謝! –