← Prev in month ← Prev in thread
Next in thread → Next in month →

Re: [xml-dev] Why is an attribute used to name/identify a chunk of markup?

From
G. Ken Holman <>
To
Roger L Costello <>, "" <>
Date
2022-02-27T16:22:24Z
ID
<>
Thread
Re: [xml-dev] Why is an attribute used to name/identify a chunk of markup?
Attribute vs. element has been long debated since SGML days. I think 
someone may have picked up the movie rights.

Early opinions (including mine) are found at:

http://xml.coverpages.org/elementsAndAttrs.html

I hope this helps.

. . . . . Ken

At 2022-02-26 20:20 +0000, Roger L Costello wrote:

>Hi Folks,
>
>An XSLT function is XML. XSLT functions are expressed this way:
>
>     <xsl:function name="f:my-function">
>
>         <!-- do something -->
>
>     </xsl:function>
>
>It has an element, function, which is bound to the XSLT namespace. 
>It has an attribute, name. The purpose of the name attribute is to 
>name the function (i.e., name a chunk of markup).
>
>Why did they (the XSLT working group) design the XML that way? 
>Specifically, why did they use an attribute for providing the name 
>of the function? Why didn't they use an element:
>
>     <xsl:function>
>         <name>f:my-function</name>
>
>         <!-- do something -->
>
>     </xsl:function>
>
>An XML Schema element declaration is XML. Element declarations are 
>expressed this way:
>
>     <xs:element name="Book">
>
>         <!-- declare it -->
>
>     </xs:element>
>
>Why did they (the XML Schema working group) design the XML that way? 
>Specifically, why did they use an attribute for providing the name 
>of the element? Why didn't they use an element:
>
>     <xs:element>
>         <name>Book</name>
>
>         <!-- declare it -->
>
>     </xs:element>
>
>An XML RDF document is XML. RDF items are expressed this way:
>
>     <River rdf:ID="Yangtze">
>
>         <!-- describe something -->
>
>     </River>
>
>Why did they (the RDF working group) design the XML that way? 
>Specifically, why did they use an attribute for providing the 
>identity of the item? Why didn't they use an element:
>
>     <River>
>         <rdf:ID>Yangtze</rdf:ID>
>
>         <!-- describe something -->
>
>     </River>
>
>In each case the XML was designed using an attribute rather than an 
>element. Why? Which of these is the reason:
>    * The choice of using an attribute rather than element was 
> completely arbitrary.
>    * They wanted to save a few bytes, so they used an attribute 
> rather than an element.
>    * Attributes have scope. The scope is from the start tag to the 
> matching end tag. So in <xsl:function name="f:my-function"> the 
> name applies from <xsl:function> to </xsl:function>. That is, the 
> name applies over the whole function. That's exactly what we want, 
> for the name to apply over the whole chunk of markup. Conversely, 
> if an element had been used, <name>f:my-function</name>, it does 
> not have scope over the entire function. Ditto for the XML Schema 
> example and the RDF example.
>    * [Before you tell me: "The XML specification says nothing about 
> attributes having scope." I know. However, there is strong 
> empirical evidence that XML developers and users *do* treat 
> attributes as having an implied scope.]
>    * It is a convention among XML developers and users to use an 
> attribute to name/identify a chunk of markup.
>    * Other (what?)
>
>/Roger
>
>


--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/x/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |
← Prev in month ← Prev in thread
Next in thread → Next in month →