<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20280148</id><updated>2012-01-29T09:51:24.580-08:00</updated><title type='text'>XML Applications</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20280148.post-8774480012125833582</id><published>2010-04-14T15:51:00.001-07:00</published><updated>2010-04-14T16:08:04.284-07:00</updated><title type='text'>On Web Applications, Web Architecture And Resource Identifiers</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;h1 class='title'&gt;On Web Applications, Web Architecture And Resource Identifiers&lt;/h1&gt;
&lt;div id='table-of-contents'&gt;
&lt;h2&gt;Table of Contents&lt;/h2&gt;
&lt;div id='text-table-of-contents'&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href='#sec-1'&gt;1 On Web Applications, Web Architecture And Resource Identifiers &lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href='#sec-1.1'&gt;1.1 Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-1.2'&gt;1.2 Case Study:  BBCiPlayer And BBC  Backstage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-1.3'&gt;1.3 BBC IPlayer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-1.4'&gt;1.4 BBC  Backstage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-1.5'&gt;1.5 How It Works At Present&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-1.6'&gt;1.6 Observations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href='#sec-2'&gt;2 Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1' class='outline-2'&gt;
&lt;h2 id='sec-1'&gt;1 On Web Applications, Web Architecture And Resource Identifiers &lt;/h2&gt;
&lt;div id='text-1'&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.1' class='outline-3'&gt;
&lt;h3 id='sec-1.1'&gt;1.1 Background&lt;/h3&gt;
&lt;div id='text-1.1'&gt;
&lt;p&gt;
As we evolve from a Web of documents (Web 1.0) to a Web of
applications (Web 2.0) and eventually &lt;a href='http://portal.acm.org/citation.cfm?id=1461945'&gt;Toward 2^W --- Beyond Web 2.0&lt;/a&gt;, key underpinnings of Web Architecture such as resource
identifiers require careful re-examination. As a member of the
W3C's Technical Architecture Group, I have been trying to define
Web Architecture in the context of Web applications; a necessary
first step toward that goal is to analyze how complex Web
applications are implemented on the Web of today.
&lt;/p&gt;
&lt;p&gt;
This article will carefully avoid abstract issues such as
Resource vs Representation, URIs vs URLs, etc.  -  and instead
focus on more practical considerations such as:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
What is  a URI and what can  the user expect to do with it?
&lt;/li&gt;
&lt;li&gt;
When dereferencing a URI, what pieces of software does one
need to have to retrieve a useful representation of that resource?
&lt;/li&gt;
&lt;li&gt;
Here, &lt;i&gt;useful&lt;/i&gt; is defined from the perspective of the
end-user. Thus, given a URI to a piece of media on the Web,
relevant metadata is necessary but not sufficient to be
useful  -  the user needs to be able to retrieve and play the  media
stream as well.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.2' class='outline-3'&gt;
&lt;h3 id='sec-1.2'&gt;1.2 Case Study:  BBCiPlayer And BBC  Backstage&lt;/h3&gt;
&lt;div id='text-1.2'&gt;
&lt;p&gt;
The British Broadcasting Corporation &lt;a href='http://www.bbc.co.uk'&gt;(BBC)&lt;/a&gt; provides streaming
access to a large amount of radio and television content via a
Web application called &lt;a href='http://www.bbc.co.uk/iplayer'&gt;BBC iPlayer&lt;/a&gt;. In addition, &lt;a href='http://backstage.bbc.co.uk'&gt;BBC Backstage&lt;/a&gt;
provides a rich data-oriented API to the underlying dataset in
the form of linked data. Additionally, program schedules can be
downloaded in a number of presentation independent formats such
as XML, JSON and YAML. The remaining sections in this article
detail what can (and cannot be done) with the information that is
readily available from BBCiPlayer and BBC Backstage. In the
process, we observe some design patterns (and anti-patterns)
found on today's Web,  and their efect on building richer Web
applications from Web parts.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.3' class='outline-3'&gt;
&lt;h3 id='sec-1.3'&gt;1.3 BBC IPlayer&lt;/h3&gt;
&lt;div id='text-1.3'&gt;
&lt;p&gt;
Using the BBC iPlayer Web application requires:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
A modern script-enabled browser such as Chrome, Firefox,
Safari, or IE.
&lt;/li&gt;
&lt;li&gt;
Browser plugins for media playback, such as Realplayer or
Windows Media.
&lt;/li&gt;
&lt;li&gt;
The Adobe Flash plugin for translating playback links on the
BBC iPlayer page to their corresponding Realplayer or
Windows Media resources.
&lt;/li&gt;
&lt;li&gt;
Appropriate media player plugins based on the user's
platform, e.g., Realplayer or Windows Media.
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The Web application as implemented provides a rich, interactive
visual interface that is sub-optimal for use from other programs.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.4' class='outline-3'&gt;
&lt;h3 id='sec-1.4'&gt;1.4 BBC  Backstage&lt;/h3&gt;
&lt;div id='text-1.4'&gt;
&lt;p&gt;
Given  the triple (radio-station, outlet, date) e.g.:
&lt;pre class='example'&gt;
 (radio4, fm, 2010/04/14)
&lt;/pre&gt;
one can retrieve an XML representation of the program schedule
using the  URL:
&lt;pre class='example'&gt;
 http://www.bbc.co.uk/radio4/programmes/schedules/fm/2010/04/14.xml
&lt;/pre&gt;
as documented on the BBC Backstage site. 
Alternative serializations such as JSON or YAML can be retrieved
by appropriately replacing the &lt;u&gt;.xml&lt;/u&gt; extension.
&lt;/p&gt;
&lt;p&gt;
This retrieved schedule contains detailed metadata for each
program that is broadcast, including a &lt;i&gt;programme id&lt;/i&gt; &lt;u&gt;pid&lt;/u&gt; that
is used throughout the data store.
&lt;/p&gt;
&lt;p&gt;
The BBCBackstage API  assigns a persistent URI to each program of
the form:
&lt;pre class='example'&gt;
http://www.bbc.co.uk/iplayer/episode/&amp;lt;pid&amp;gt;
&lt;/pre&gt;
When retrieved, this persistent URI redirects appropriately to
the BBC iPlayer page for that program. Note that the media
streams for most programs are only available for a week. 
&lt;/p&gt;
&lt;p&gt;
As an example of the above, you can retrieve  &lt;i&gt;Midnight News&lt;/i&gt;
from BBC  Radio4 for April 14, 2010 by doing:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Retrieve the program schedule via  &lt;a href='#sec-1.4'&gt;BBC  Radio 4 FM  Schedule&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Obtain the &lt;i&gt;programme id&lt;/i&gt; &lt;u&gt;pid&lt;/u&gt; for Midnight News   &lt;u&gt;b00rw6hf&lt;/u&gt;
&lt;/li&gt;
&lt;li&gt;
The BBC iPlayer URL for this episode is &lt;a href='http://www.bbc.co.uk/iplayer/episode/b00rw6hf'&gt;http://www.bbc.co.uk/iplayer/episode/b00rw6hf&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On the surface, this URL  appears to satisfy many of the
expectations that users might have:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Plays the relevant media when handed to a Web browser.
&lt;/li&gt;
&lt;li&gt;
Can be bookmarked for later use (modulo the 1 week limit on
archived media).
&lt;/li&gt;
&lt;li&gt;
Can be passed around via email?
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The final bullet above exposes some of the problems with the
current implementation. Note the set of pre-requisites for the
BBC iPlayer Web application enumerated earlier; &lt;b&gt;all&lt;/b&gt; of these
apply to the URI generated above.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.5' class='outline-3'&gt;
&lt;h3 id='sec-1.5'&gt;1.5 How It Works At Present&lt;/h3&gt;
&lt;div id='text-1.5'&gt;
&lt;p&gt;
It is instructive to turn on HTTP  Request/Response tracking in
the browser when opening  URL &lt;a href='http://www.bbc.co.uk/iplayer/episode/b00rw6hf'&gt;http://www.bbc.co.uk/iplayer/episode/b00rw6hf&lt;/a&gt;.
Here is a brief summary of some of the steps that the browser
performs:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Receives an HTTP Response with content-type &lt;u&gt;text/html&lt;/u&gt;.
&lt;/li&gt;
&lt;li&gt;
The body of this response is an HTML document that in turn
loads a number of JS  libraries.
&lt;/li&gt;
&lt;li&gt;
An embed tag in the retrieved HTML page invokes the Flash
(shockwave) plugin.
&lt;/li&gt;
&lt;li&gt;
The embedded shockwave player receives several
mostly undocumented parameters that pass in details of the enclosing
environment.
&lt;/li&gt;
&lt;li&gt;
Once these steps have completed, the browser is
automatically redirected to
&lt;a href='http://www.bbc.co.uk/iplayer/console/b00rw6hf'&gt;http://www.bbc.co.uk/iplayer/console/b00rw6hf&lt;/a&gt;, i.e., the
earlier URI  is transformed by replacing &lt;i&gt;episode&lt;/i&gt; with &lt;i&gt;console&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;
The HTTP conversation continues, and the browser is
eventually sent to 
&lt;a href='http://www.bbc.co.uk/mediaselector/4/mtis/stream/b00rw6g2'&gt;http://www.bbc.co.uk/mediaselector/4/mtis/stream/b00rw6g2&lt;/a&gt;
which resolves to the realplayer &lt;u&gt;.ram&lt;/u&gt; file: &lt;a href='http://www.bbc.co.uk//iplayer/aod/playlists/2g/6w/r0/0b/RadioBridge_intl_2300_bbc_radio_fourfm.ram'&gt;http://www.bbc.co.uk//iplayer/aod/playlists/2g/6w/r0/0b/RadioBridge_intl_2300_bbc_radio_fourfm.ram&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Thus, the recipiant of the Midnight News URL  would need to
implement &lt;b&gt;all&lt;/b&gt;  of the above transforms (or have access to
software that does those computations) in order to effectively
consume the media stream that was addressed by the URL.
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-1.6' class='outline-3'&gt;
&lt;h3 id='sec-1.6'&gt;1.6 Observations&lt;/h3&gt;
&lt;div id='text-1.6'&gt;
&lt;ol&gt;
&lt;li&gt;
Web applications have gotten more complicated than they need
to be: notice the multiple redundant layers between Flash,
JS, HTML, and the complex interplay that results during the
HTTP conversation between client and server.
&lt;/li&gt;
&lt;li&gt;
Such complex interplay within multiple layers makes RESTful
APIs difficult to achieve.
&lt;/li&gt;
&lt;li&gt;
It is possible that the underlying media stream URLs are
being intentionally obfuscated.  It's hard to imagine anyone
wanting to voluntarily inflict the pain inherent in steps
1..6 without a valid reason.
&lt;/li&gt;
&lt;li&gt;
The obfuscation scheme makes it effectively impossible (on
the surface) for interfaces other than the BBC iPlayer Web
application to play the media.
&lt;/li&gt;
&lt;li&gt;
Note &lt;i&gt;on the surface&lt;/i&gt; in the above. As a testament to the
robustness of the architecture of the Web, steps 1..6 can be
hidden in  a computational blackbox that surfaces a reliable
URI that can be email.
&lt;/li&gt;
&lt;li&gt;
As an implementation of 
the above, see this &lt;a href='http://www.iplayerconverter.co.uk/convert.aspx'&gt;IPlayer Convertor&lt;/a&gt; found on the Web.
&lt;/li&gt;
&lt;li&gt;
In addition to providing a simple HTML  form that takes a
&lt;u&gt;pid&lt;/u&gt; and performs the trnaslation that happens during the
client/server HTTP  conversation, that site offers a
persistent URL  given a &lt;u&gt;pid&lt;/u&gt;.
&lt;/li&gt;
&lt;li&gt;
What's more, the persistent URL  offered up by this
convertor is guessable given the &lt;u&gt;pid&lt;/u&gt;  -  this in  its turn
then becomes a RESTful API for accessing BBC  media streams
given a &lt;u&gt;pid&lt;/u&gt;.
&lt;/li&gt;
&lt;li&gt;
 Thus, for the BBC  Midnight News episode in question, the
iPlayer convertor above serves up &lt;a href='http://www.iplayerconverter.co.uk//pid/b00rw6hf/r/stream.aspx'&gt;http://www.iplayerconverter.co.uk//pid/b00rw6hf/r/stream.aspx&lt;/a&gt;. 
&lt;/li&gt;
&lt;li&gt;
Notice that replacing &lt;u&gt;%s&lt;/u&gt; in
&lt;pre class='example'&gt;
http://www.iplayerconverter.co.uk/pid/%s/r/stream.aspx
&lt;/pre&gt;
in the above with a &lt;u&gt;pid&lt;/u&gt; yeilds a persistent URL that can be
handed off directly to a media player, where:
&lt;ol&gt;
&lt;li&gt;
The media player supports the codec in use.
&lt;/li&gt;
&lt;li&gt;
The media player supports the underlying streaming protocol,
&lt;u&gt;rtsp&lt;/u&gt; in this case.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='outline-container-2' class='outline-2'&gt;
&lt;h2 id='sec-2'&gt;2 Conclusion&lt;/h2&gt;
&lt;div id='text-2'&gt;
&lt;p&gt;
So to conclude, let's ask the original question:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Given a URL, what can a user expect to be able to do with
it,  after having dereferenced the URI?
&lt;/li&gt;
&lt;li&gt;
How does the user discover  what software bits he needs in
order to consume the received HTTP  Response? 
&lt;/li&gt;
&lt;li&gt;
In  Web 1.0 (Web of documents) the answer was simple ---
HTTP  Response header &lt;u&gt;Content-Type&lt;/u&gt; specified the media
type, which in turn specified what  the recipiant needed to understand.
&lt;/li&gt;
&lt;li&gt;
A recipiant who only understands mime-type &lt;u&gt;text/html&lt;/u&gt; in
this example is likely to  flee screaming in terror if he
makes the  mistake of doing &lt;i&gt;Show Source&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;
We all acknowledge that &lt;i&gt;Show Source&lt;/i&gt; helped Web 1.0 succeed.
&lt;/li&gt;
&lt;li&gt;
Q: What is the equivalent of &lt;i&gt;Show Source&lt;/i&gt; that will help us
collectively take the Web to the next level?
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='postamble'&gt;&lt;p class='author'&gt; Author: T.V Raman
&lt;a href='mailto:raman@google.com'&gt;&amp;lt;raman@google.com&amp;gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p class='date'&gt; Date: 2010-04-14 Wed&lt;/p&gt;
&lt;p&gt;HTML generated by org-mode 6.08c in emacs 23&lt;/p&gt;
&lt;/div&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-8774480012125833582?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/8774480012125833582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=8774480012125833582' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/8774480012125833582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/8774480012125833582'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2010/04/on-web-applications-web-architecture.html' title='On Web Applications, Web Architecture And Resource Identifiers'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-8270146794200262295</id><published>2009-01-29T16:04:00.001-08:00</published><updated>2009-01-29T16:04:07.285-08:00</updated><title type='text'>Toward 2^W --- Beyond Web-2.0: The Rest Of The Story</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;div&gt;
&lt;p&gt;A little more than a year ago,
I blogged here about my thoughts around the &lt;a href='http://xml-applications.blogspot.com/2007/11/2w-second-coming-of-web.html'&gt;second
coming of the Web&lt;/a&gt;.
I've now fleshed out some of those ideas in  a full-length
&lt;a href='http://mags.acm.org/communications/200902/'&gt;Communications Of The ACM&lt;/a&gt; article.
You can find the &lt;a href='http://emacspeak.sourceforge.net/raman/publications/beyond-web20-cacm-2009/'&gt;rest
of the story&lt;/a&gt; 
in terms of the thought process that led to the article on my
personal Web site.
Additionally, this blog post might also serve as a useful means
to collect comments from across the Web, since the ACM Web site
itself provides no such functionality. Note also that in general,
users might find  my personal copy of the article that I've
placed on my Web site more accessible than navigating the
Communications Of The ACM Web site.&lt;/p&gt;
    &lt;/div&gt;

    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-8270146794200262295?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/8270146794200262295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=8270146794200262295' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/8270146794200262295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/8270146794200262295'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2009/01/toward-2w-beyond-web-20-rest-of-story_7874.html' title='Toward 2^W --- Beyond Web-2.0: The Rest Of The Story'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-3934717326744719099</id><published>2007-12-20T14:28:00.001-08:00</published><updated>2007-12-20T14:28:59.996-08:00</updated><title type='text'>Leveraging 2^W For Accessibility</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;p&gt;A few weeks ago, I blogged about 
&lt;a href='http://xml-applications.blogspot.com/2007/11/2w-second-coming-of-web.html'&gt;2^W:
The Second Coming Of The Web&lt;/a&gt;.
That article talked about how once Web content was
URL-addressable,
it immediately became &lt;em&gt;mash-up ready&lt;/em&gt;
thereby opening up the way to creating integrated &lt;em&gt;views&lt;/em&gt;
of that content.
Earlier this year, I blogged on Google's Official Blog 
about how Web-2.0 mashups presented an as yet unleveraged
opportunity for providing accessibility across the Web by
integrating 
custom views to present content in a form that was optimized to
the end-user's needs. To reiterate --- this is in fact  what
Universal Accessibility was always supposed to mean --- rather
than the somewhat short-sighted view that has become prevalent 
--- &lt;q&gt;If it works with a screenreader it's accessible&lt;/q&gt;.
&lt;/p&gt;

&lt;p&gt;More recently,  my Google officemate 
&lt;a href='http://www.clcworld.net/'&gt;Charles L Chen&lt;/a&gt; and I have
been working on a JavaScript based Web-2.0 
framework called 
&lt;a href='http://google-axsjax.google.com'&gt;AxsJAX&lt;/a&gt; for
&lt;em&gt;injecting&lt;/em&gt; accessibility into Web applications.
As an illustration of the ideas underlying 2^W 
coming to life in running code enabled via AxsJAX, 
we recently 
&lt;a href='http://feeds.feedburner.com/~r/blogspot/MKuf/~3/203516891/accessibility-mashups-axsjax-fun-with.html'&gt;AxsJAX-ed&lt;/a&gt;
the &lt;a href='http://www.xkcd.com'&gt;XKCD comic strip&lt;/a&gt;.
Here, we bring together the XKCD sketches with the associated
transcript to create  a mashed-up view where the user gets to
listen to the transcript while at the XKCD site.
You can most easily experience this for yourself by installing 
&lt;a href='http://firevox.clcworld.net/'&gt;a self-voicing plugin&lt;/a&gt;
for the Firefox browser.&lt;/p&gt;
&lt;p&gt;
 Note however that there is nothing &lt;em&gt; Fire Vox&lt;/em&gt; specific
 about this  XKCD mashup 
or any of the other AxsJAX extensions; all it needs is a
relatively modern Web browser like Firefox that implements 
&lt;a href='http://www.w3.org/TR/2007/WD-aria-roadmap-20071019/%20GMT%3B%20Path%3D/%20Set-Cookie:%20TPExits%3Dnull|null|null|10|null|null|%3B%20Expires%3DWed,%2001-Oct-2008%2022:22:31%20GMT%3B%20Path%3D/%20Connection:%20close%20Content-Type:%20text/html%3B%20charset%3DISO-8859-1'&gt;W3C
ARIA&lt;/a&gt; and adaptive technology that has been updated to work
with the event notifications raised by conformant AJAX applications.
&lt;/p&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-3934717326744719099?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/3934717326744719099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=3934717326744719099' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/3934717326744719099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/3934717326744719099'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2007/12/leveraging-2w-for-accessibility.html' title='Leveraging 2^W For Accessibility'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-6814264117705847368</id><published>2007-11-21T09:18:00.001-08:00</published><updated>2007-11-21T09:26:33.028-08:00</updated><title type='text'>Toward URL Equality For Web Clients And Web Servers</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;p&gt;
In response to my previous post on the &lt;a href='http://xml-applications.blogspot.com/2007/11/2w-second-coming-of-web.html'&gt;second
coming of the Web&lt;/a&gt;, &lt;a href='http://www.blogger.com/profile/11208049295254078897'&gt;Mark
Birbeck&lt;/a&gt; commented on the power of the Web Command line and
went on to right an extremely insightful article on &lt;a href='http://internet-apps.blogspot.com/2007/11/using-urls-to-pass-parameters-to-web.html'&gt;Passing
command line arguments via XPointer&lt;/a&gt;. His article provides a
concrete example of how his Web application container (&lt;a href='http://www.swcube.com/node/175'&gt;Sidewinder&lt;/a&gt;) leverages
the XPointer syntax to pass parameters to the Web application
that is being invoked. But his article also succinctly points out
what has been a glaring inequality between Web servers and Web
clients when it comes to URLs. The Web server and Web client
started off as equals at the inception of the Web in this regard
&lt;code&gt;?&lt;/code&gt; indicated server-side URL-params, while
&lt;code&gt;#&lt;/code&gt; stood for client-side URL-params. The the last 10
years have seen the Web successfully use URL parameters on the
server-side to achieve the RESTful Web in all its glory. In stark
contrast, URL intelligence on the client-side has been stagnant
at where it was in 1992 in that the only &lt;em&gt;client-side
parameter&lt;/em&gt; that can be passed via a URL is the
&lt;code&gt;id&lt;/code&gt; of the element to which the client should jump
upon opening the document.&lt;/p&gt;
&lt;p&gt;To achieve equality among Web servers and Web clients in this
regard, it is perhaps time that the Web started innovating with
respect to the use of client-side URL parameters. Here is a
wish-list of things that one might wish to achieve using such
client-side URL  params --- from here on, let's once again think
&lt;code&gt;?&lt;/code&gt; for the server, &lt;code&gt;#&lt;/code&gt; for the client.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Specify initial location&lt;/dt&gt;
&lt;dd&gt;Already achieved via &lt;code&gt;&amp;lt;URL&amp;gt;#id&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;Set style&lt;/dt&gt;
&lt;dd&gt;Open a URL with  a user-specified style that is chosen among
the several alternatives offered by a site, e.g.:
 &lt;code&gt;&amp;lt;URL&amp;gt;#style(high-contrast.css)&lt;/code&gt;.&lt;/dd&gt;
&lt;dt&gt;Filter a document&lt;/dt&gt;
&lt;dd&gt;Filter a document by a given XPath expression:
&lt;code&gt;&amp;lt;url&amp;gt;#xpath-filter(expression)&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;And a  lot more than can fit in this margin...&lt;/p&gt;
&lt;p&gt;Note that all of the XPointer syntax sketched out above
should be  taken with a large grain of salt --- the goal  here is
to speculate, not specify;-).
&lt;/p&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-6814264117705847368?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/6814264117705847368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=6814264117705847368' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/6814264117705847368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/6814264117705847368'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2007/11/toward-url-equality-for-web-clients-and.html' title='Toward URL Equality For Web Clients And Web Servers'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-6018675815276255236</id><published>2007-11-19T15:46:00.001-08:00</published><updated>2007-11-20T09:12:32.737-08:00</updated><title type='text'>2^W: The Second Coming Of The Web</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;table summary='Navigation' border='2' cellspacing='0' cellpadding='6' rules='groups' frame='hsides'&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;a href='http://emacspeak.sourceforge.net/raman/tvr-2w-nov-2007-tp/tvr-2w-nov-2007-tp.mp3'&gt;Audio&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href='http://emacspeak.sourceforge.net/raman/tvr-2w-nov-2007-tp/tvr-2w-nov-2007-tp.pdf'&gt;Slides (PDF)&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;&lt;a href='http://emacspeak.sourceforge.net/raman/tvr-2w-nov-2007-tp/tvr-2w-nov-2007-tp.html'&gt;Slides (HTML)&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
&lt;p&gt;I recently gave a talk entitled
 &lt;a href='http://emacspeak.sourceforge.net/raman/tvr-2w-nov-2007-tp/'&gt;
What
Comes After Web 2.0?&lt;/a&gt;
at the 
&lt;a href='http://www.w3.org/2007/11/07-TechPlenAgenda.html'&gt;
W3C Technical Plenary&lt;/a&gt;
 in Boston. The humor in the talk was
well appreciated; I'm posting this entry to ensure that the
technical meat underlying the talk does not get overlooked.
&lt;/p&gt;
&lt;h2&gt;The Importance Of Being URLAddressable&lt;/h2&gt;
&lt;p&gt;The World Wide Web was built on the following  architectural
pieces:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;HTTP&lt;/dt&gt;
&lt;dd&gt;A simple client-server protocol&lt;/dd&gt;
&lt;dt&gt;HTML&lt;/dt&gt;
&lt;dd&gt;A simple markup language for authoring hypertext&lt;/dd&gt;
&lt;dt&gt;URLs&lt;/dt&gt;
&lt;dd&gt;A universal means of addressing Web content&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Where Web 1.0 was about bringing useful content to the Web,
Web 2.0 is about building Web artifacts out of Web parts.
URLs play a central role in enabling such re-use --- notice that
a necessary and sufficient condition for something to
&lt;em&gt;exist&lt;/em&gt; on the Web is that it be addressable via a URL. A
key consequence of  this design is that Web artifacts when
deployed on the Web themselves become an integral part of the Web
and are &lt;em&gt;ready&lt;/em&gt; to be re-used in building higher-level Web
components. Here are a few illustrative examples:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Google Search&lt;/dt&gt;
&lt;dd&gt;Clearly, Google WebSearch would not exist without the
Web. But notice that every Google Search in its turn has a URL;
this makes it possible for hypertext documents across the Web to
&lt;em&gt;embed&lt;/em&gt; links to specific searches. Thus, not only is
Google Search built on the Web; it itself becomes an integral
part of the Web.&lt;/dd&gt;
&lt;dt&gt;Auctions&lt;/dt&gt;
&lt;dd&gt;Items available on auction sites such as eBay are URL
addressable. This again makes these an integral partof the
Web.&lt;/dd&gt;
&lt;dt&gt;Online Shopping&lt;/dt&gt;
&lt;dd&gt;When items in an online catalog have URLs, each item  immediately
becomes  part of the Web.
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;The overall impact of the above design is profound; by
ensuring that everything that exists on the Web has a unique URL,
we ensure that 
it becomes possible to construct higher-level Web artifacts out
of existing Web parts. This is what has led to the success of
mashups on the Web; notice that the typical Web mashup accesses a
multiplicity of data sources via  the relevant URLs to deliver an
&lt;em&gt;integrated&lt;/em&gt; view to the user.&lt;/p&gt;
&lt;p&gt;As we look forward to the second coming of the Web where
mashups are not limited to pairwise combinations of Web
resources, but instead allow general &lt;em&gt;composition&lt;/em&gt; of
arbitrary  combinations of Web resources, it's important to
stress the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Separating data, presentation and interaction into their
relevant layers (HTML, CSS, JavaScript)
is crucial for content re-use on the Web.&lt;/li&gt;
&lt;li&gt;Data access is critical for mashups that bring together
multiple data sources into an integrated view. However, mashups
can do much more; for example, the same mashup technologies can
be leveraged to &lt;em&gt;integrate&lt;/em&gt; multiple views of the same
data to produce custom views. A good example of this is seen in
the context of XForms, where the model-view separation permits
the &lt;em&gt;binding&lt;/em&gt; of multiple synchronized views to a given data-set. 
&lt;/li&gt;
&lt;li&gt;Finally, retaining the separation between data, presentation
and interaction in the process of creating mashups, and ensuring
that the resulting Web artifact is itself URL addressable
leads to the definition of easy to use REST APIs; this is crucial
for the evolution of the 
&lt;a href='http://emacspeak.blogspot.com/2005/12/emacspeak-web-tricks-web-command-line.html'&gt;Web Command Line&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-6018675815276255236?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/6018675815276255236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=6018675815276255236' title='34 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/6018675815276255236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/6018675815276255236'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2007/11/2w-second-coming-of-web.html' title='2^W: The Second Coming Of The Web'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>34</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-114316675856771301</id><published>2006-03-23T18:19:00.000-08:00</published><updated>2006-03-23T18:19:18.610-08:00</updated><title type='text'>XForms And AJAX Applications In Perspective </title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;The following article by 
&lt;a href="http://www.oreillynet.com/xml/blog/2006/03/why_xforms_matter_revisited.html"&gt;Kurt
Cagle &lt;/a&gt; makes some excellent points that are worth summarizing
here --- I highly recommend  his article cited above,  and his 
subsequent follow-ups that  his  article promises. His detailed
write-up helps put Web developments of the last 6  years in
perspective --- I'll summarize the salient bits below:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;XForms Processing Model&lt;/dt&gt;
&lt;dd&gt;When we set out to define the next generation of Web forms
technology in early 2000, we had some very lofty goals which I
believe we achieved very welll -- modulo the fact that our
enthusiastic optimism at the time made us believe that we'd be
done in 2 years. (Fact Of Life --- it's still happening).
The primary underpinning of XForms is &lt;em&gt;not&lt;/em&gt; the beloved
XML angle-brackets, it's the &lt;em&gt;processing model&lt;/em&gt;
that does for structured XML what spread-sheets achieved for
tabular data two decades ago.&lt;/dd&gt;
&lt;dt&gt;XForms Submission&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Everyone talks of XForms UI controls &lt;em&gt;all&lt;/em&gt; the time,
and depending on their perspective either praises it --- or as
happens far too often ---
mocks it for its &lt;em&gt;abstract&lt;/em&gt; UI controls. Sometimes people
even make it beyond this and get to talking of the XForms Model,
and then fall into the tarpit of arguing over declarative vs
imperative programming. The upshot of course is that they
&lt;em&gt;never&lt;/em&gt; get around to talking about the XForms Submission
mechanism.&lt;/p&gt;
&lt;p&gt;The XForms Submission mechanism was designed in early 2001
with the insight that the HTML model of replacing the entire page
each time one did a client/server round-trip was suboptimal with
respect to good user experience on the client. 
This is why XForms Submit allows you to say &lt;br/&gt;
&lt;code&gt;&amp;lt;submission replace="instance"&amp;gt;...&amp;lt;/submission&amp;gt;&lt;/code&gt;&lt;br/&gt;
which means 
&lt;blockquote&gt;
Treat what you get in the server response as fresh form data.
&lt;/blockquote&gt;
Notice the close relationship to &lt;code&gt;XML-HTTP&lt;/code&gt; --- this
is &lt;em&gt;not&lt;/em&gt; an accident. XForms Submission  was invented
right around the time XML-HTTP began showing up on the radar as a
means to reduce angle-bracket client/server chatter  that
plagued 
older HTML Forms.
&lt;/p&gt;
&lt;p&gt;
But getting XML Data from the server is only &lt;em&gt;one half&lt;/em&gt; of
the Web application story --- to be useful, the retrieved data
needs to be made tangible to the user. In conjunction with the
afore-mentioned XForms Processing Model, the above is sufficient
to account for the several pages of application-specific
JavaScript that each AJAX application requires for moving the
data from the XML response into the UI tree and back.&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;Model Constraints&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Kurt gives an excellent overview of how the XForms Model and
the encapsulated constraints help the developer progressively
evolve the model.
He also points out how this is typically more difficult to do
when the entire application is implemented as a &lt;em&gt;program&lt;/em&gt;.
I'd like to add the following in the hopes of finally laying the
&lt;q&gt;declarative vs imperative&lt;/q&gt; debate to rest ---  at least in
the context of XForms.&lt;/p&gt;
&lt;p&gt;In fact, all &lt;q&gt;declarative vs imperative&lt;/q&gt; debates are at
best pointless religious debates, in practice, one finds that
combining the two approaches as appropriate often leads to the
best implementations. In this context, XForms declarative
constraints reflect a refactoring of those parts of a Web
application that  need to change often from those aspects of Web
interaction that follow a common design pattern. Thus, once the
model constraints and the inter-dependencies among data items in
the model have been refactored, what emerges is the XForms
Processing Model --- which by the way &lt;strong&gt;is&lt;/strong&gt;
implemented in imperative languages ranging from C/C++ to
JavaScript.&lt;/p&gt;
&lt;p&gt;The net effect is to move the coding of the complex bits into
the browser e.g., the Firefox XForms plugin or the various IE
extensions, and free the Web developer to focus on key aspects of
the application at hand. Now, it's probably understandable that
browser vendors cried &lt;em&gt;foul&lt;/em&gt; in the early days of XForms
--- after all, now the browser &lt;em&gt;had&lt;/em&gt; to do more;
however, if you look back at the history of computing, compiler
writers &lt;em&gt;always&lt;/em&gt; cry foul when you raise the level of
abstraction present in your language. The encouraging thing ---
both from the history of computing, as well as from the last two
years  of XForms adoption is that over time the interests of the
application developer  moves the compiler (in this case browser)
implementor to build support for the higher-level abstraction
--- the former &lt;em&gt;negative&lt;/em&gt; of &lt;q&gt;I need to do more&lt;/q&gt;
from the browser  turns into a positive of the form &lt;q&gt;Choose my
browser platform because I &lt;strong&gt;do more&lt;/strong&gt; for you the
developer!&lt;/q&gt;.
&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;Consistent Eventing&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Web applications on the client come to life thanks to
client-side eventing. Developing AJAX applications for legacy browsers is
time-consuming &lt;em&gt;because&lt;/em&gt; of inconsistent eventing ---
though some of this pain is assuaged by using appropriate
&lt;em&gt;cross-browser&lt;/em&gt; JavaScript libraries whose implementors
have bravely shouldered that pain --- similar to the
compiler/browser developer taking the hit of implementing support
for higher-level abstractions. When we developed XForms 1.0, we
made a very concious decision that:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We would &lt;strong&gt;require&lt;/strong&gt; full DOM2 Events support
--- including event bubbling and capture.&lt;/li&gt;
&lt;li&gt;To keep the language extensible, we used XML Events to author
 event binding.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Together, the above leads to a robust interaction model with
the necessary flexibility of allowing application developers the
needed extension points to &lt;em&gt;hook&lt;/em&gt; custom behavior. It
&lt;em&gt;does&lt;/em&gt;  suffer from the fact that browsers need to
implement a consistent eventing model; once again, notice that
this apparent negative is saying nothing more than
&lt;blockquote&gt;Over time,
browsers will absorb the functionality  present in cross-browser
eventing libraries, thereby obviating the need for an application
to download a library that provides this abstraction
layer.&lt;/blockquote&gt;
&lt;/p&gt;
&lt;/dd&gt;
&lt;dt&gt;XForms Via AJAX&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;The primary attraction  for using AJAX is that it is easy to
deploy in an environment where legacy browsers co-exist with
next-generation Web technologies. It is crucial here to realize
that AJAX is an excellent &lt;em&gt;deployment&lt;/em&gt; technology --- even
though it may not be the best choice when it comes to authoring
an application.
In completing this circle, it is encouraging to see many XForms
implementations beginning to process XForms markup on the server
to deliver an AJAX deployment 
of the application to legacy browsers --- thereby reflecting yet
another design point of XForms 1.0 --- namely --- the XForms
Processing Model &lt;strong&gt;must&lt;/strong&gt; be implementable  in any
of the following forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entirely on the client&lt;/li&gt;
&lt;li&gt;Entirely on the server&lt;/li&gt;
&lt;li&gt;Partially split between client and server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And &lt;em&gt;still&lt;/em&gt; be able to deliver a consistent user
experience. Here, consistency of user experience is intended to
be more than &lt;em&gt;screen-deep&lt;/em&gt;; consistency means that the
user &lt;em&gt;gets the same answer&lt;/em&gt; independent of the runtime
deployment environment  
that is used to access the application.&lt;/p&gt;
&lt;/dd&gt;
&lt;/dl&gt;

    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-114316675856771301?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/114316675856771301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=114316675856771301' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/114316675856771301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/114316675856771301'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2006/03/xforms-and-ajax-applications-in.html' title='XForms And AJAX Applications In Perspective '/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20280148.post-113632220907788110</id><published>2006-01-03T13:01:00.000-08:00</published><updated>2006-01-03T16:30:20.970-08:00</updated><title type='text'>Introduction</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;XML provides a simple,
extensible means for serializing data, think S-Expressions. This
Blog focuses on building component-based applications using XML
technologies.&lt;/p&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20280148-113632220907788110?l=xml-applications.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://xml-applications.blogspot.com/feeds/113632220907788110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20280148&amp;postID=113632220907788110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/113632220907788110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20280148/posts/default/113632220907788110'/><link rel='alternate' type='text/html' href='http://xml-applications.blogspot.com/2006/01/xml-provides-simple-extensible-means.html' title='Introduction'/><author><name>T. V. Raman</name><uri>http://www.blogger.com/profile/03589687652590194428</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
