目標: 我有一個名爲Schema1.xsd的現有標準XSD。 我想擴展Schema2.xsd的complexType(「TVDSection」)中的Schema1.xsd的complexType(「tElementWithIDAndName」)。唯一粒子歸因錯誤
當我嘗試驗證Schema2.xsd在Altova的XMLSpy的/氧XML編輯器,我收到以下錯誤:
錯誤: [的Xerces] COS-nonambig: 「http://www.mySchema.com/Generic/1」:部件1和WC [##其他:「http://www.mybasic.com/1」,「」](或其替代組中的元素)違反「唯一粒子歸因」。在對這個模式進行驗證期間,將爲這兩個粒子創建模糊性。
Schema1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.mybasic.com/1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
targetNamespace="http://www.mybasic.com/1"
elementFormDefault="qualified"
version="0.1">
<xs:complexType name="tElementWithIDAndName">
<xs:sequence>
<xs:element name="additionalName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:schema>
Schema2.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.mySchema.com/Generic/1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:myBasic="http://www.mybasic.com/1"
targetNamespace="http://www.mySchema.com/Generic/1"
elementFormDefault="qualified" version="0.1">
<xs:import namespace="http://www.mybasic.com/1" schemaLocation="schema.xsd"/>
<xs:element name="Element1" type="TVDSection"/>
<xs:complexType name="TVDSection">
<xs:complexContent>
<xs:extension base="myBasic:tElementWithIDAndName">
<xs:sequence>
<xs:element name="element1" type="xs:string" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:schema>
我不知道在哪裏/如何違反了唯一粒子屬性。 請幫我解決上述問題。
不幸的是,我無法更改schema1.xsd,因爲它是來自另一個團隊的項目的標準xsd。另外我現有的工具不支持XSD 1.1。 有任何想法來解決這個問題。 – VinayCH
爲什麼要擴展schema1.xsd中的複雜類型?它已經允許通配符內容在additionalName元素之後,爲什麼你需要改變它呢? –
至於「我現有的工具不支持XSD 1.1」,答案當然是切換到正在積極開發產品並遵守最新標準的工具供應商。 –