Ik probeer een XML Schema te maken dat de volgende XML definieert:
Met daaraan de volgende eisen:
1. element naam moet precies 1x voorkomen
2. element kind moet minimaal 1x voorkomen
3. element naam hoeft niet het eerste element te zijn (maar mag overal staan)
Eis 3 is wat de problemen oplevert. Zonder die eis is het eenvoudig:
Analoog daaraan, dacht ik de derde eis op te lossen door xs:sequence te vervangen door xs:all:
Helaas is dat geen geldig XML Schema omdat unbounded niet wordt toegestaan binnen een xs:all element.
Ik ben ook al andere richtingen op aan het denken geweest, zoals naam in een aparte complexType definiëren, waarna ik kind die laat extenden. Vooralsnog zonder succes.
Er zijn wel alternatieven, zoals een nieuwe tag kinderen introduceren die alle kind tags omsluit. Of door simpelweg eis 3 te laten vallen. Deze opties hebben echter niet mijn voorkeur omdat de XML die ik wil valideren al bestaat.
Kan ik mijn schema zo opstellen dat aan alle drie de genoemde eisen wordt voldaan?
Excuses voor het flauwe Donald Duck-voorbeeldje, ik kon niks beter bedenken om mijn probleem te illustreren.
XML:
1
2
3
4
5
6
| <eend> <naam>Donald</naam> <kind>Kwik</kind> <kind>Kwek</kind> <kind>Kwak</kind> </eend> |
Met daaraan de volgende eisen:
1. element naam moet precies 1x voorkomen
2. element kind moet minimaal 1x voorkomen
3. element naam hoeft niet het eerste element te zijn (maar mag overal staan)
Eis 3 is wat de problemen oplevert. Zonder die eis is het eenvoudig:
XML:
1
2
3
4
5
6
7
8
| <xs:element name="eend"> <xs:complexType> <xs:sequence> <xs:element name="naam" /> <xs:element name="kind" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> |
Analoog daaraan, dacht ik de derde eis op te lossen door xs:sequence te vervangen door xs:all:
XML:
1
2
3
4
5
6
7
8
| <xs:element name="eend"> <xs:complexType> <xs:all> <xs:element name="naam" /> <xs:element name="kind" maxOccurs="unbounded"/> </xs:all> </xs:complexType> </xs:element> |
Helaas is dat geen geldig XML Schema omdat unbounded niet wordt toegestaan binnen een xs:all element.
Ik ben ook al andere richtingen op aan het denken geweest, zoals naam in een aparte complexType definiëren, waarna ik kind die laat extenden. Vooralsnog zonder succes.
Er zijn wel alternatieven, zoals een nieuwe tag kinderen introduceren die alle kind tags omsluit. Of door simpelweg eis 3 te laten vallen. Deze opties hebben echter niet mijn voorkeur omdat de XML die ik wil valideren al bestaat.
Kan ik mijn schema zo opstellen dat aan alle drie de genoemde eisen wordt voldaan?
Excuses voor het flauwe Donald Duck-voorbeeldje, ik kon niks beter bedenken om mijn probleem te illustreren.
The sentence below is true.
The sentence above is false.