Re: [xml-dev] The real world doesn't have an "other xyz", neither should your XML

From
Piotr Bański <>
To
Date
2014-02-12T14:33:41Z
ID
<>
Thread
Re: [xml-dev] The real world doesn't have an "other xyz", neither should your XML
Isn't this a matter of the phase where you expect extensibility?
You can have 'statically' extensible vocabulary, with no 'dynamic' 
extensibility of the kind offered by xsd:any.

Best,

   Piotr

On 12/02/14 15:21, Stephen D Green wrote:
> Oh the irony of this question appearing on XML-Dev !  Isn't the
> provision of 'Other' the whole point of *Extensible* markup language?
>
> Ironic too that without that hack-ish xsd:any (or xsd:anyAttribute) in
> a schema, XML constrained by an XSD schema is not particularly
> extensible. So what does XML mean by 'extensible'?
>
> I guess what people usually want is semi-constrained markup,
> codelists, etc. Fully-constrained is what the coder wants but the
> business rarely copes with fully controlled vocabularies.
> And yet what real value is there actually in a partially-controlled
> vocabulary? Less value perhaps than either fully controlled or
> uncontrolled. Yet so often it is the preferred choice of the analyst.
> ----
> Stephen D Green
>
>
> On 9 February 2014 14:27, Costello, Roger L. <> wrote:
>> Hi Folks,
>>
>> I see many XML instances (and corresponding XML Schemas) with an "other" catchall element.
>>
>> I wish to convince you that an "other" catchall element is contrary to one's objectives and should be avoided.
>>
>> First, a quote from the book, "Principles of Program Design" (Jackson Design Methodology):
>>
>>          The structure of a program must be
>>          based on the structures of all the data
>>          it processes.
>>
>> A corollary to that is:
>>
>>          Data should model the real world.
>>
>> So there is this deep connection:
>>
>>          real world --> data model --> program structure
>>
>> In the real world there is no "other" component: When was the last time you drove an "other car" or purchased an "other vegetable"?
>>
>> So it is wrong to create a data model for a nonexistent real world entity. Likewise it is wrong to write a program component for "other" data.
>>
>> Let's take an example. Suppose we use XML Schema to model the countries of the world:
>>
>> <xs:element name="Country">
>>      <xs:complexType>
>>          <xs:choice>
>>              <xs:element name="Afghanistan" type="countryType" />
>>              <xs:element name="Albania" type="countryType" />
>>              ...
>>              <xs:element name="Zimbabwe" type="countryType" />
>>              <xs:element name="Other" type="countryType" />
>>          </xs:choice>
>>      </xs:complexType>
>> </xs:element>
>>
>> Since the countries of the world are ever-changing, we include an "Other" element in anticipation of some future, unforeseen country.
>>
>> It is easy to imagine assigning a program component to Iceland:
>>
>> <Country>
>>      <Iceland>...</Iceland>
>> </Document>
>>
>> But what is a program component to do when it encounters the "Other" country:
>>
>> <Country>
>>      <Other>...</Other>
>> </Document>
>>
>> There is no "Other" country and so any operation that we might assign to the data would be nonsensical.
>>
>> Stated another way:
>>
>>          "Other" data is not machine-processable. The reason
>>          for using XML is that to enable machine-processing.
>>          But by incorporating non-machine-processable
>>          "other" data one's own objectives are defeated.
>>
>> "Okay, suppose that I avoid using an <Other> element and, say, a new country emerges; what should I do?"
>>
>> Answer: the real world has changed (there is a new country). Your data model must be updated to reflect the real world. So update your XML Schema and in your program add a component for the new country.
>>
>> Comments welcome.
>>
>> /Roger
>>
>> _______________________________________________________________________
>>
>> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>> to support XML implementation and development. To minimize
>> spam in the archives, you must subscribe before posting.
>>
>> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
>> Or unsubscribe: 
>> subscribe: 
>> List archive: http://lists.xml.org/archives/xml-dev/
>> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>
> _______________________________________________________________________
>
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
>
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: 
> subscribe: 
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php
>