W3C home > Mailing lists > Public > xmlschema-dev@w3.org > May 2011

Re: Here's why I use XML Schemas ... Why do you use XML Schemas?

From: Noah Mendelsohn <nrm@arcanedomain.com>
Date: Tue, 03 May 2011 21:32:16 -0400
Message-ID: <4DC0ACA0.6070008@arcanedomain.com>
To: "Costello, Roger L." <costello@mitre.org>
CC: "xmlschema-dev@w3.org" <xmlschema-dev@w3.org>
Argh, I forgot to put in the link to the slide deck. It's at [1]. I suggest 
you run it as an actual slide show in Powerpoint (press F5), as there are 
some animiations that get lost if you just page through the slides.

Noah

[1] http://www.arcanedomain.com/publications/SchemaSecrets.ppt

On 5/3/2011 9:30 PM, Noah Mendelsohn wrote:
> Way back in 2002, I gave a presentation on XML Schema at a quite
> technically focused developer event. The slides are at [1], and on slide 9
> I attempted to give a quite general answer to your question. The contents
> of that slide are:
>
> =================
>
> WHAT ARE SCHEMAS FOR?
>
> * Contracts: agreeing on formats
>
> * Tool building: know what the data will be
> before the first instance shows up
> - Database integration
> - User interface tools
> - Programming language bindings
>
> * Validation: make sure we got what we expected
>
> =================
>
> I think that list holds up pretty well nearly 10 years later. Of course,
> nobody's saying that ever schema should be used for all of these purposes,
> but I think all these uses are important. I hope the bullet-level
> descriptions are self-explanatory, but if not let me know and I'll elaborate.
>
> Noah
>
>
> On 4/18/2011 10:00 AM, Costello, Roger L. wrote:
>> Hi Folks,
>>
>> I use XML Schemas to check that data meets the expectations and
>> constraints of my business.
>>
>> For example, my business supports these credit cards: MasterCard, Visa,
>> and American Express. My business expects purchase orders it receives to
>> use one of those credit cards. My business transmits purchase requests
>> using one of those credit cards. To express my business
>> expectation/constraint in a way that is machine-processable, I created an
>> XML Schema which enumerates the supported credit cards:
>>
>> <xs:simpleType name="CreditCards">
>> <xs:restriction base="xs:string">
>> <xs:enumeration value="MasterCard" />
>> <xs:enumeration value="Visa" />
>> <xs:enumeration value="American Express" />
>> </xs:restriction>
>> </xs:simpleType>
>>
>> Using that simpleType, these datum can be identified as not acceptable:
>>
>> Diners Club
>> Hello World
>> delete * from *
>>
>> So, I use XML Schemas to ensure (as best I can) that my business
>> applications receive legitimate data and don't receive bad data (and
>> conversely, that my business applications transmit legitimate data and
>> not bad data).
>>
>> As a corollary, I don't create XML Schemas with unconstrained data types
>> like this:
>>
>> <xs:simpleType name="CreditCards">
>> <xs:restriction base="xs:string" />
>> </xs:simpleType>
>>
>> That does not specify my business expectation/constraint. The consequence
>> of its use is that it will unnecessarily expose my business applications
>> to potentially undesirable data such as:
>>
>> Diners Club
>> Hello World
>> delete * from *
>>
>> Strong data typing helps me to ensure that my business applications
>> receive legitimate data and don't receive bad data (and conversely, that
>> my business applications transmit legitimate data and not bad data).
>>
>> I create XML Schemas with strong data typing. I use XML Schemas to ensure
>> that inbound and outbound data meets my expectations and business
>> constraints.
>>
>> Why do you use XML Schemas?
>>
>> /Roger
>>
>>
Received on Wednesday, 4 May 2011 01:32:41 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 4 May 2011 01:34:33 GMT