Re: [xml-dev] Don’t create elements with simple content and attributes

From
Stephen D Green <>
To
"Costello, Roger L." <>
Date
2018-09-27T14:11:19Z
ID
<CAA0AChXYgObru9fctKS6bQrOVN6D=>
Thread
Re: [xml-dev] Don’t create elements with simple content and attributes
Mmm. Then the common understanding of an attribute in XML as a representation of a property of its owner does not fit this axiom.

See https://www.w3schools.com/xml/xml_attributes.asp 

On Thursday, 27 September 2018, Costello, Roger L. <[email protected]> wrote:

Hi Stephen,

 

  • Why not this then?
  • <Cost currency="USD"><Amount>8.95</Amount></Cost>

 

That design is good. Each item of data (USD and 8.95) is explicitly labeled. There is no anonymous/unlabeled data. It is consistent with the fundamental axiom of XML.

 

My opinion …

 

/Roger

 

From: Stephen D Green <[email protected]>
Sent: Thursday, September 27, 2018 9:16 AM
To: Costello, Roger L. <[email protected]>
Cc: [email protected]
Subject: Re: [xml-dev] Don’t create elements with simple content and attributes

 

Why not this then?

<Cost><Amount currency="USD">8.95</Amount></Cost>

Or

<Cost currency="USD"><Amount>8.95</Amount></Cost>

 

 


On Thursday, 27 September 2018, Costello, Roger L. <[email protected]> wrote:

Hi Folks,

I hold this to be the fundamental axiom of XML:

          Make the structure of data explicit.

We accomplish that by adding a label (markup) to the data.

There are various terms for this notion of making the structure of data explicit: upconversion and uptranslation.

Elements with simple content and attributes are antithetical to the fundamental axiom of XML.

Here is an element with simple content and an attribute:

<Cost currency="USD">8.95</Cost>

 

The data USD is explicitly labeled. The label indicates that USD is a currency.

What about the data 8.95, is it labeled? No! It is anonymous/unlabeled. Note: Cost is not the label for 8.95; Cost is the label for the whole package.

In my most recent post, I asked, “What is that number (8.95)?” I received excellent responses: 8.95 is a price, 8.95 is an amount, etc. External knowledge was needed to label the data. The need for external knowledge completely contradicts the fundamental axiom of XML.

Therefore, don’t create XML like this:

<Cost currency="USD">8.95</Cost>

instead, create XML like this:

<Cost>
   
<Currency>USD</Currency>
   
<Amount>8.95</Amount>
</Cost>

 

Do you agree?

 

/Roger

 



--

----

Stephen D Green

 



--
----
Stephen D Green