Announcement

Collapse
No announcement yet.

"Unexpected child element"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • "Unexpected child element"

    Hallo zusammen,
    ich hab ein merkwürdiges Problem mit einem XSD Schema.

    Mein XML sieht vereinfacht so aus:
    Code:
    <root>
      <group>
        <image src="testbild.png" />
        <group>
          <text>Das ist ein Beispiel</text>
          <group>
           <!-- ... -->
          </group>
        </group>
      </group>
    </root>
    Wie man sieht, kann das group Element weitere Kind-Elemente beinhalten, Elemente wie image und text können das nicht.
    Da die XML Elemente text, image, group, etc. im richtigen XML einige gemeinsame Attribute haben, habe ich diese in einer gemeinsamen Definition zusammengefasst:

    Code:
    <xs:complexType name="component">
    		<xs:annotation>
    			<xs:documentation xml:lang="de">
    				Die Komponente ist nur ein Datentyp und definiert die Basisbestandteile der Klassen.
    			</xs:documentation>
    		</xs:annotation>
    		<xs:attribute name="x" type="xs:short" use="required"/>
    		<xs:attribute name="y" type="xs:short" use="required"/>
    		<xs:attribute name="width" type="xs:short" use="required"/>
    		<xs:attribute name="height" type="xs:short" use="required"/>
    		<xs:attribute name="name" type="xs:string" use="required"/>
    	</xs:complexType>
    Davon hab ich dann die jeweiligen Komponenten abgeleitet, z.B. die Gruppe:

    Code:
    <xs:element name="group">
    		<xs:annotation>
    			<xs:documentation xml:lang="de">
    				Eine Tabelle mit beliebig vielen Spalten und Zeilen. Das Erscheinungsbild wird in den verknüpften Styles definiert.
    			</xs:documentation>
    		</xs:annotation>
    		<xs:complexType>
    			<xs:complexContent>
    				<xs:extension base="component">
    					<xs:sequence>
    						<xs:element ref="group" minOccurs="0" maxOccurs="unbounded"/>
    						<xs:element ref="text" minOccurs="0" maxOccurs="unbounded"/>
    						<xs:element ref="image" minOccurs="0" maxOccurs="unbounded"/>
    					</xs:sequence>
    					<xs:attribute name="backgroundColor" type="xs:string" use="optional"/>
    					<xs:attribute name="align" use="optional">
    						<xs:simpleType>
    							<xs:restriction base="xs:string">
    								<xs:enumeration value="left"/>
    								<xs:enumeration value="right"/>
    								<xs:enumeration value="center"/>
    							</xs:restriction>
    						</xs:simpleType>
    					</xs:attribute>
    				</xs:extension>
    			</xs:complexContent>
    		</xs:complexType>
    		<xs:unique name="unique_name">
    			<xs:selector xpath="*"/>
    			<xs:field xpath="@name"/>
    		</xs:unique>
    	</xs:element>
    Wenn ich jetzt das XML Dokument speichern möchte, erhalte ich immer obige Fehlermeldung. Entferne ich das group Element aus dem group Element, dann kann ich problemlos speichern. Das verstehe ich nicht, denn in der Ableitung group aus components geht doch eindeutig hervor, dass in group weitere group Elemente stecken können?

    Bin dankbar für jeden Hinweis!
Working...
X