Guest Davidb Posted April 2, 2008 Share Posted April 2, 2008 Hi,I'm currently having an issue with defining a schema.My XML structure looks like this: <document> <letter> <header>...</header> <data1>...</data1> <data2>...</data2> </letter> <letter> <header>...</header> <data2>...</data2> <data4>...</data4> <data1>...</data1> </letter></document> Each letter is repeated, with a header first, then a mixture of "data" tag which can be in any order,but can only occur once. The "data" tags are defined by substitution groups and are complex types.Here is my schema: <xs:element name="document"> <xs:complexType> <xs:sequence> <xs:element name="letter" type="letter" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType></xs:element><xs:complexType name="letter"> <xs:sequence> <xs:element ref="header" /> <xs:element ref="DataBlock" minOccurs="1" maxOccurs="unbounded" /> </xs:sequence></xs:complexType><xs:element name="header">...</xs:element><xs:element name="DataBlock" type="DataBlockType" abstract="true" /><xs:complexType name="DataBlockType" abstract="true" /><xs:element name="data1" substitutionGroup="DataBlock"> <xs:complexType> <xs:complexContent> <xs:extension base="DataBlockType"> <xs:sequence> <xs:element name="id" type="xs:integer" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType></xs:element>... etc ... My problem is how to get the "DataBlock" tags to only repeat once. The above workds fine execpt that the tags can be repeated. I have tried combinationsof xs:choice, xs:all, but I cannot get it to work.For example: this is valid, but shouldn't be: <letter> <header>...</header> <data1>...</data1> <data2>...</data2> <data1>...</data1> <data1>...</data2></letter> Any ideas?Thanks!David Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.