Hallo liebes Forum,
ich habe folgendes Problem:
Zu einem XML File sollte ich ein XSD schreiben, damit ich anschließend immer prüfen kann, ob alle folgenden XML Files immer noch dieser Form entsprechen.
XML File (vereinfachte Struktur):
Alles anzeigen
also ich habe in meinem vorgegebenen XML Elemente mit Typen diese Elemente dürfen auf jeden Fall maximal einmal vorkommen oder gar nicht. Könnte mir irgendjemand von euch helfen ?
Ich habe es schon mit zwei verschiedenen unique Varianten versucht, hat aber leider nicht geklappt.
bisheriger XSD Code (verkürzt):
Alles anzeigen
Also wenn mir jemand helfen könnte, ich wäre wirklich sehr dankbar !
lg,
Hannes
ich habe folgendes Problem:
Zu einem XML File sollte ich ein XSD schreiben, damit ich anschließend immer prüfen kann, ob alle folgenden XML Files immer noch dieser Form entsprechen.
XML File (vereinfachte Struktur):
Quellcode
- <values>
- <section1>...</section1>
- <section2>
- <a>..</a>
- <b>..</b>
- <b>..</b>
- <c>
- <d type="x">wert1</d>
- </c>
- <!-- darf nicht vorkommen -->
- <c>
- <d type="x">wertx</d>
- </c>
- <!-- bis hierher -->
- <c>
- <d type="y">wert2</d>
- </c>
- <!-- darf nicht vorkommen -->
- <c>
- <d type="y">werty</d>
- </c>
- <!-- bis hierher -->
- </values>
also ich habe in meinem vorgegebenen XML Elemente mit Typen diese Elemente dürfen auf jeden Fall maximal einmal vorkommen oder gar nicht. Könnte mir irgendjemand von euch helfen ?
Ich habe es schon mit zwei verschiedenen unique Varianten versucht, hat aber leider nicht geklappt.
bisheriger XSD Code (verkürzt):
Quellcode
- <xs:complexType name="section2Type">
- <xs:sequence>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="a" type="xs:string" />
- <xs:element maxOccurs="unbounded" name="b" type="bType" />
- <xs:element maxOccurs="unbounded" name="c" type="cType" >
- <!-- 1. Variante -->
- <xs:unique name="shortcut-unique">
- <xs:selector xpath="c/d"/>
- <xs:field xpath="@type"/>
- </xs:unique>
- </xs:element>
- </xs:choice>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="cType">
- <xs:sequence>
- <xs:element name="d">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="type" type="TypeEnum" use="required" />
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- <!-- 2. Vartiante -->
- <xs:unique name="unique-type">
- <xs:selector xpath="d"/>
- <xs:field xpath="@type"/>
- </xs:unique>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
Also wenn mir jemand helfen könnte, ich wäre wirklich sehr dankbar !
lg,
Hannes