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] Indirection in XML

(Apologies if off-topic.) The philosophers talk to two degrees of abstraction: 'total' abstraction is where you remove the specific details and are only left with what is common to all things of, say, a genus,  while 'formal abstraction' is where you extract all the things that make that thing unique. 

Everyone was born on some day is total but you were born on that day is formal (...except my mother, whose parents disputed which day she was born on, right from the next day.) 

So a 'layer' is usually syntax/processing to represent the total abstraction (e.g. type) and the formal abstraction (e.g. implementation.) 

So you might say that for a publication, the XML schema more represents a total abstraction while the stylesheet more represents a formal abstraction. So the entity name might be a total abstraction while the entity value might be the formal abstraction. 

Parnas' Information Hiding is an example of total abstraction, but the two degrees go hand in hand. (SGML 's revolution was that if you needed documents published on unknown systems decades or centuries hence, you need to do a total abstraction and leave the formal abstraction work for later. In fact SGML has a particular kind of entity, the SDATA entity, which had the semantics 'I am not the real value, just an indication'.)

There is a fan out effect: once a  system reaches a certain level of complexity, you need to introduce extra layer, to work out what abstractions are necessary and practical to increase cohesion and coupling. The talk of 'simplicity' often reveals only that the speaker's use case does not require an extra level of abstraction (or that the extra levels are catered for by a different technology in the same ecosystem, which is respectable.)

(IMHO the difference between a toy language and a professional one is whether there is at least one level of abstraction supported: const, getters and setters, XML entities. If it turns out you need more than one layer, you may abstract the commonalities of the layers: so where old unix C has  cpp as a second layer of abstraction  (and m4 as a third),  these were abstracted to be classes and objects.)  

Regards
Rick

On 7 May 2017 06:42, "Costello, Roger L." <costello@mitre.org> wrote:

Hi Folks,

In the following XML document, an entity is defined and then it is used in the XML:

<?xml version="1.0"?>
<!DOCTYPE Commentary [
<!ENTITY adjective "insightful">
]>
<Commentary>
    His presentation was
&adjective;
</Commentary>

 

Instead is using the word ‘insightful’ directly in the <Commentary> element, it is used indirectly, via the entity. The entity introduced a level of indirection.

 

In the following XML Schema, a simpleType is defined and then it is referenced in the declaration of the ‘title’ element:

<xs:element name="title" type="person-title" />

<xs:simpleType name="person-title">
   
<xs:restriction base="xs:string">
       
<xs:enumeration value="Mr." />
       
<xs:enumeration value="Mrs." />
       
<xs:enumeration value="Miss" />
   
</xs:restriction>
</xs:simpleType>

Instead of providing the simpleType directly in the ‘title’ element declaration, it is provided indirectly, via a reference. The reference introduced a level of indirection.

 

In the following XSLT document, a variable is defined and then later it is dereferenced in an output statement:

<xsl:variable name="author" select="/Book/Author[1]/text()"/>

. . .

<xsl:sequence select="('The author is: ', $author)" />

 

Instead of showing the author directly in the output statement, the author is shown indirectly, via a variable. The variable introduced a level of indirection.

 

All problems in computer science can be solved by another level of indirection. – David Wheeler

-------------------------------

/Roger




[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