Problem bei deklaration eines (root)-tags

Hallo,
hab leider noch ein Problem entdeckt. Meine XMl Struktur soll ja in dem root Verzeichnis beliebig viele Datensätze <Format> speichern können. Wie gesagt das SchemaFile läuft jetzt aber sobald ich mehr als einen <Format> Datensatz im <root> Tag habe bekomme ich diesen ValidierungsFehler:
Invalid content was found starting with element 'Format'. No child element is expected at this point.

Nochmal das SchemaFile:
HTML:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="Format" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="OID" type="xs:ID" maxOccurs="1" minOccurs="1"/>
<xs:element name="Extension" type="xs:string" minOccurs="1"/>
<xs:element name="Mimetype" type="xs:string"  maxOccurs="1" minOccurs="1"/>
<xs:element name="Description" type="xs:string"  minOccurs="0"/>
<xs:element name="Category" type="xs:string" default="others" minOccurs="1"/>
<xs:element name="Segment" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="1"/>
<xs:element name="Offset" type="xs:integer" maxOccurs="1" minOccurs="1"/>
<xs:element name="Action" type="xs:string" maxOccurs="1" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ExtractSize" type="xs:integer" maxOccurs="1" minOccurs="0"/>
<xs:element name="Case" type="xs:boolean" maxOccurs="1" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

So wie ich das verstanden habe sollte ihm <xs:element name="Format" minOccurs="1"> doch sagen dass <Format> 1bis unendlich mal vorkommen kann. Oder wie muss ich das sonst deklarieren, dass da beliebig viele Formate reinkommen können?
 
Hallo,

soweit ich weiß ist maxOccurs standardmäßig auf 1 eingestellt, das heißt du musst maxOccurs auf unbounded setzen.

MFG

zEriX
 
Hallo nochmal,
ich hab mich entschieden mein Schema jetzt mit restrictions zu machen. Grund so kann ich eine Minimal Länge für Inhalte von Tags angeben und damit absichern, dass ich sowas nicht bekommen kann <A></A>
Das sieht dann so aus:
HTML:
<xs:element name="Offset">
<xs:simpleType>
	<xs:restriction
			base="xs:string">
			<xs:pattern	value="[0-9]*" />
			<xs:minLength	value="1" />
	</xs:restriction>
</xs:simpleType>
</xs:element>
Leider bringt die neue lösung auch ein neues Problem mit sich: Wenn ein Element eine restriction besitzt kann ich dem element tag keine Attribute mehr hinzufügen, also auch kein maxOccurs, was ich aber unbedingt brauche. Ich will nämlich sicherstellen, dass z.B. der Offset-Tag von Oben genau einmal vorkommt. Das min=ccurs kann ich mir dank <xs:minLength value="1" /> ja sparen. Nur das mit MaxOccurs bereitet mir noch Kopfzerbrechen. Wie könnte man sowas denn machen?

edit: Hat sich erledigt. Ich habe Offset extra nach dem Format tag als complex type definiert. Wenn man dann im Format ein element reinnimmt und den type auf offset stellt kann man da sagen max/minOccurs...
 
Zuletzt bearbeitet:
HTML:
<xs:simpleType name="OID">
		<xs:restriction base="xs:string">
				<xs:pattern value="[0-9]*" />
				<xs:minLength value="1" />
		</xs:restriction>
	</xs:simpleType>

Könnt ihr mir verraten wie ich es schaffe, dass dieser type unique wird?
 

Neue Beiträge

Zurück