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: [xml-dev] Flatter is Better (part two)

If you're designing an application without any knowledge of the end users you're doing research!  In that case you instrument the system and determine what the characteristics of the usage really are .

However, that's rarely never needed.   In the consumer world the data volumes are rarely so large that size is an issue.  The exception is the embedded world and in those cases you know the devices you're working with.  The concept of XML that does not have a predefined end user is non-sense.  The very fact that you have some data that you think has enough value to make it worth exchanging means you have some concept of what that value is based on, and in any case that usage isn't likely to require a lack of hierarchy! 

Let's be clear: flat in no way enables a freedom to use XML for random applications.  At best, flat simply enables loosely coupled data that requires more work to re-associate. At worse, flat leaves more room for error when trying to figure out what those associations are (due to a lack of explicit cross references). 

The closest one get's to XML that can run wild is likely RDF and you tell me how much that meets the capabilities you imagine for your freely roaming XML?

On Wed Dec 03 2014 at 4:29:28 AM Costello, Roger L. <costello@mitre.org> wrote:

Hi Peter,

 

You wrote that an XML design must take into consideration a-priori knowledge about the environment that the design must live within:

 

Ø  Better is determined by the needs of the data exchange partners

Ø  and can vary by use case, network bandwidth, target device and

Ø  a host of other constraints

 

How does one design XML in the absence of such a-priori knowledge?

 

That is, how does one design XML that can be used over lots of different networks with lots of different bandwidths? How does one design XML that can be used by lots of different consumers (applications) with widely varying processing needs?

 

I thought that the whole point of designing XML is to avoid tying a design to a specific network, a specific application, a specific use-case?

 

I thought that the whole point of designing XML is to create a design that is usable across lots of different networks, by lots of different applications, by lots of different use-cases?

 

I thought that the whole point is to free XML of such tethering.

 

XML, run free!

 

In the absence of a-priori knowledge we must, I contend, strip away all preconceived notions of “the right XML hierarchy.” I content that’s what a flat design provides: it provides a series of components that that can be mashed up with other components, can be transformed (parsed) into any hierarchy, and can be normalized/stripped-down. The flat design, it seems to me, represents the ultimate goal of XML – freedom from a-priori constraints/knowledge!

 

                XML design, be eternal!

 

Comments?

 

/Roger

 

From: Peter Hunsberger [mailto:peter.hunsberger@gmail.com]
Sent: Tuesday, December 02, 2014 10:51 AM
To: Costello, Roger L.; xml-dev@lists.xml.org
Subject: Re: [xml-dev] Flatter is Better (part two)

 

Roger, 

 

I really think you need to give up on this particular line of reasoning.  In particular, your examples make it clear you're aiming this at data exchange, not documents. As such, there is no "better" as far as flat or fat.  Better is determined by the needs of the data exchange partners and can vary by use case, network bandwidth, target device and a host of other constraints that do not allow for the kind of generalizations that you are trying to make.  Rather, at best these recommendations are useless and at best they will lead to broken designs that do not fit any needs at all.

If you want to make a generic statement about XML formatting it should be along the lines of:

 

"There are many technologies for transforming XML to fit the needs of the business partners exchanging the XML.  When designing a system to exchange XML data, design your systems to exploit these technologies in order that the data exchange meet the needs of the business partners in the best possible way."

On Tue Dec 02 2014 at 4:31:27 AM Costello, Roger L. <costello@mitre.org> wrote:

Hi Folks,

 

The flat design is about creating XML documents that consist of a long series of standalone components:

 

 

A component in the document can be combined with other data (mashup):

 

Let’s take a concrete example to compare the flat design versus the fat design.

 

Here is a flat design:

 

<Iowa>
   
<house>
       
<street>1009 Arlington Court</street>
       
<city>Davenport</city>
       
<style>Ranch</style>
       
<porch>open</porch>
       
<year-built>1951</year-built>
       
<square-feet>1700</square-feet>
   
</house>
   
<house>
       
<street>1008 Arlington Court</street>
       
<city>Davenport</city>
       
<style>Ranch</style>
       
<porch>closed</porch>
       
<year-built>1955</year-built>
       
<square-feet>1850</square-feet>
   
</house>
    ...
</Iowa>

 

The document consists of a long series of standalone <house> components. Any of those <house> components could be mashed-up with other data, e.g., mashup a <house> component with a <GPS> component.

 

Here is a fat design:

 

<Iowa>
   
<city name="Davenport">
       
<street name="Arlington Court">
           
<house>

               <street-number>1009</style>
               
<style>Ranch</style>
               
<porch>open</porch>
               
<year-built>1951</year-built>
               
<square-feet>1700</square-feet>
           
</house>
           
<house>

                <street-number>1008</style>
               
<style>Ranch</style>
               
<porch>closed</porch>
               
<year-built>1955</year-built>
               
<square-feet>1850</square-feet>
           
</house>
       
</street>
        ...
   
</city>
   
<city name="Cedar Rapids"> ... </city>
    ...
</Iowa>

 

The flat design and the fat design are radically different!

 

In the fat design the houses have been grouped into streets and the streets have been grouped into cities. The street name data has been removed from each <house> and also the city name data has been removed from each <house>. Consequently, each <house> is no longer a standalone component. House data is now fragmented, scattered over the document. The ability to do mashups has been lost (or, at least, greatly hampered). The fat design has normalized the data and, as I argued in my last message: Normalization is horrible for data exchange formats.

 

It’s best to exchange the data in the flat design. Consumers can transform it into the fat design, if needed.

 

Recommendation: When designing a data exchange format create a flat design.

 

Comments?

 

/Roger

PNG image

PNG image



[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