XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: Use-case for a complex type that has no valid content?

From Michael Kay:

 

The main use of a void type is that it helps you construct a system with closure properties, so you can have operators on types (e.g. the intersection of two types) where the result of the operation is always a legitimate type.

 

Use-cases are the bane of orthogonality. Any system with good orthogonality can do things for which it is very difficult to find a use case. What’s the use case for adding two negative numbers? Design focused excessively on use-cases leads to a lack of orthogonality.

 

XSD 1.1 introduced xs:error which is a void simple type. It’s defined similarly to <xs:choice/> as a union with no member types. The specific use case for introducing it was for conditional type assignment, it allows you to have the last alternative in a list of alternatives say “if none of the above conditions is true, then the type is xs:error, meaning no content is accepted”.

 

Michael Kay

 

 

From: Costello, Roger L.
Sent: Tuesday, June 02, 2015 3:01 PM
To: xml-dev@lists.xml.org
Subject: RE: Use-case for a complex type that has no valid content?

 

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.
Sent: Tuesday, June 02, 2015 1:45 PM
To: xml-dev@lists.xml.org
Subject: Use-case for a complex type that has no valid content?

 

Hi Folks,

 

Thanks for the outstanding responses.

 

I have learned that an empty choice:

 

    <xs:complexType name="ValidationKiller">
       
<xs:choice/>
   
</xs:complexType>

 

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



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS