W3C home > Mailing lists > Public > xmlschema-dev@w3.org > December 2007

RE: Enumerated complex types

From: Michael Kay <mike@saxonica.com>
Date: Thu, 20 Dec 2007 00:47:13 -0000
To: "'Guillaume Lebleu'" <gl@brixlogic.com>, <xmlschema-dev@w3.org>
Message-ID: <02fd01c842a1$dc8c28c0$6401a8c0@turtle>


The WG is currently leaning against the idea of allowing assertions to
reference external documents. But the current Saxon-SA 9.0 implementation of
assertions allows it. This enables you to define a file error-codes.xml

<error-codes>
  <error>
    <code>0001<code>
    <status>fatal</status>
    <desc>Minor fire detected in hard disk drive</desc>
  </error>
  ...

and your schema can then say

<xs:complexType name="errorType">
  <xs:assert test="some $e in document('error-codes.xml')/*/error satisfies
deep-equal(., $e)"/>

Personally I think this is really useful and would like to see it allowed by
the specification.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Guillaume Lebleu
> Sent: 20 December 2007 00:32
> To: xmlschema-dev@w3.org
> Subject: Enumerated complex types
> 
> 
> Hello,
> 
> I was wondering if the use case of enumerated complex types 
> had ever come up in this list. I did a quick search and 
> couldn't find anything.
> 
> Here is what I mean:
> 
> Let's say I want to define a list of error codes, each having 
> a possible value, an associated severity level and 
> description, which I have specified in the form of a table, 
> and I want to return in an XML message this information in 
> the form of a <Status> aggregate containing a <StatusCode> 
> element, <Severity> element and <Desc> element. This is a 
> realistic use case you can find in industry standards such as 
> IFX and ACORD.
> 
> One solution would be to use co-constraint rules: if 
> StatusCode is '100' 
> then Severity must be 'Error' and Desc must be 'General 
> Error', but that sounds quite complicated and it wouldn't 
> help the manual edition of a schema-compliant XML document.
> 
> The alternative solution I'm thinking about would be 
> something similar to the xs:restriction and xs:enumeration 
> used in simpleTypes, but with a value that would essentially 
> be an XML document fragment.
> 
> I see several advantages to this representation:
> 
>     * It could be leveraged to accelerate the manual edition of XML
>       instances of an XML Schema through code completion: I select one
>       of the enumerations in a drop-down list, just like today XML
>       editors allow me to select an enumerated value from a 
> drop-down list.
>     * It is easier than co-constraint representation for 
> business people
>       to understand and edit.
>     * It might be easier for type checkers to deal with (intuition).
> 
> Let me know what you think and sorry if this has already been 
> discussed.
> 
> Guillaume
> 
Received on Thursday, 20 December 2007 00:47:40 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:01 GMT