Here's an idea: use the empty choice as a way to express "I'm terminating my connection with you". For example, a sender creates XML documents containing data of either books, magazines, or Kindles. At some point the sender wants to signal that he will send no further XML documents. So the XML Schema is created in which one of the
choices is a Halt element (of type ValidationKiller): <xs:element name="Document"> <xs:complexType> <xs:choice> <xs:element name="Books" type="BooksType" /> <xs:element name="Magazines" type="MagazinesType" /> <xs:element name="Kindles" type="KindlesType" /> <xs:element name="Halt" type="ValidationKiller" /> </xs:choice> </xs:complexType> </xs:element> where ValidationKiller is a complexType containing an empty choice: <xs:complexType name="ValidationKiller"> <xs:choice/> </xs:complexType> To halt the communication the sender sends this XML document: <Document> <Halt/> </Document> That fails validation and thus terminates the connection. Is that a reasonable use of ValidationKiller? /Roger From: Costello, Roger L. Hi Folks, Thanks for the outstanding responses. I have learned that an empty choice:
<xs:complexType name="ValidationKiller"> has no valid content, i.e., the set of valid content is the empty set, {}. When would one use such a complex type? Can you think of a use-case for it? /Roger |