/ / Unikalny błąd atrybucji cząstek - xml, xsd, xsd-validation, xml-validation, altova

Niepowtarzalny błąd przypisania cząstek - xml, xsd, xsd-validation, xml-validation, altova

Cel: Mam istniejący standardowy plik XSD o nazwie Schema1.xsd. Chcę rozszerzyć complexType („tElementWithIDAndName”) Schema1.xsd w complexType („TVDSection”) Schema2.xsd.

Gdy próbuję sprawdzić poprawność pliku Schema2.xsd w edytorze XMLSpy / oXygen Altova XML, pojawia się następujący błąd:

Błąd: [Xerces] cos-nonambig: "http://www.mySchema.com/Generic/1„: element1 i WC [## other:”http://www.mybasic.com/1„,” „] (lub elementy z ich grupy podstawień) naruszają„ unikalną atrybucję cząstek ”. Podczas walidacji przeciwko temu schematowi dla tych dwóch cząstek powstanie niejednoznaczność.

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>

Nie wiem gdzie / jak narusza to unikalne przypisanie cząstek. Pomóż mi rozwiązać powyższy problem.

Odpowiedzi:

3 dla odpowiedzi № 1

Twój model treści można sparafrazować jako „dowolny”liczba elementów o nazwie p: nazwa_dodatkowa, po której następuje dowolna liczba elementów, pod warunkiem że nie znajdują się one w przestrzeni nazw „p”, po której następuje dowolna liczba elementów o nazwie q: element1, „. Teraz, jeśli napotkamy element aq: element1, walidator nie „t wiem, czy umieścić go w drugiej grupie (dowolna liczba elementów, które nie są„ w przestrzeni nazw ”p”) czy w trzeciej grupie (cokolwiek o nazwie q: element1). Stąd niejednoznaczność.

W XSD 1.1 specyfikacja została zmieniona, tak że w tej sytuacji, w której występuje konkretna cząstka i cząstka wieloznaczna, które pasują do siebie, konkretna cząstka jest zawsze wybierana preferencyjnie. Jednym z rozwiązań jest po prostu przejście na XSD 1.1. Jeśli chcesz pozostać przy XSD 1.0, musisz zmienić symbol wieloznaczny xs: any, aby nakładał więcej ograniczeń na przestrzeń nazw dozwolonych elementów.