|
Subject: Re: [xsl] XSL in the AJAX world From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Tue, 13 May 2008 14:58:46 -0700 |
> Wouldn't the tools
> needed to work with the JSON data start to cover the exact same
> functionality as XSLT, a time-tested industry standard?
We just need to drop the conditional tense here.
The tools to work with JSON are just... XSLT.
More precisely, one can process a "json document" directly in XSLT by
using the FXSL function:
f:json-document()
or
f:json-file-document()
as described almost one year ago here:
http://dnovatchev.spaces.live.com/Blog/cns!44B0A32C2CCF7488!367.entry
So, the argument seems to be essentially which programming language is
better: Javascript or XSLT.
It is not quite correct to compare apples and oranges, and the
difference between a functional and an imperative language goes much
further than that. Having said this, however, it must be obvious what
is the preference of the members of xsl-list.
Below is just an example. Suppose I need to process the latest data
from Yahoo's Traffic Service (served as JSON) in order to see if there
has been any incident on I-90, so that I could choose another road and
avoid any resulting congestion.
This is essentially a 1-liner:
f:json-document($vstrJSon)/*/*
[type eq 'incident'
and
contains(Title, 'I-90')
]
The result is:
<Result>
<type>incident</type>
<Title>Disabled vehicle, on I-90 WB at WESTERN HIGH RISE</Title>
<Description>DISABLED VEHICLE; RIGHT LANE CLOSED; STAY LEFT.</Description>
<Latitude>47.589820</Latitude>
<Longitude>-122.286320</Longitude>
<Direction>WB</Direction>
<Severity>2</Severity>
<ReportDate>1210712434</ReportDate>
<UpdateDate>1210713430</UpdateDate>
<EndDate>1210715230</EndDate>
</Result>
and here is the complete code:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:f="http://fxsl.sf.net/"
exclude-result-prefixes="f xs"
>
<xsl:import href=
"file:///C:/CVS-DDN/fxsl-xslt2/f/func-json-document.xsl"/>
<xsl:template match="/">
<xsl:copy-of select=
"f:json-document($vstrJSon)/*/*
[type eq 'incident'
and
contains(Title, 'I-90')
]"
/>
</xsl:template>
<xsl:variable name="vstrJSon" as="xs:string">
{"ResultSet":
{"LastUpdateDate":"1210714091",
"Result":
[{"type":"incident",
"Title":"Slow traffic, on I-5 SB at S HOLGATE ST",
"Description":"MODERATE CONGESTION; SLOW TRAFFIC; ALLOW EXTRA TIME.",
"Latitude":"47.586100",
"Longitude":"-122.320390",
"Direction":"SB",
"Severity":2,
"ReportDate":1210712877,
"UpdateDate":1210713430,
"EndDate":1210715231
},
{"type":"incident",
"Title":"Disabled vehicle, on I-90 WB at WESTERN HIGH RISE",
"Description":"DISABLED VEHICLE; RIGHT LANE CLOSED; STAY LEFT.",
"Latitude":"47.589820",
"Longitude":"-122.286320",
"Direction":"WB",
"Severity":2,
"ReportDate":1210712434,
"UpdateDate":1210713430,
"EndDate":1210715230
}
]
}
}
</xsl:variable>
</xsl:stylesheet>
--
Cheers,
Dimitre Novatchev
---------------------------------------
Truly great madness cannot be achieved without significant intelligence.
---------------------------------------
To invent, you need a good imagination and a pile of junk
-------------------------------------
Never fight an inanimate object
-------------------------------------
You've achieved success in your field when you don't know whether what
you're doing is work or play
On Tue, May 13, 2008 at 12:46 PM, Scott Trenda <Scott.Trenda@xxxxxxxx> wrote:
> Karl,
>
> It sounds like you are pushing to try to reinvent the wheel in JSON. I
> do agree that JSON is the perfect format for small amounts of static
> data, such as quick status updates via AJAX. However, as soon as the
> content relayed between client and server becomes anything relatively
> complex, JSON runs out of unique constructs to represent that data.
> These tools that you refer to must cobble together half-solutions in
> JSON to represent data structures that XML handles natively (namespaces,
> attributes, repeated elements, etc).
>
> I don't want to say one is authoritatively Better than the other here.
> However, when your client-server AJAX data reaches a certain point of
> complexity (a CMS should easily fall into this category), your data will
> be around a certain size in either JSON or XML. At this point, why would
> JSON be faster, or even a better choice for the data? Wouldn't the tools
> needed to work with the JSON data start to cover the exact same
> functionality as XSLT, a time-tested industry standard? What is it about
> XML that renders it unsuitable for use in a "fast lightweight and
> possibly frequent" means of data transport in an AJAX solution?
>
>
> The link I'm not seeing here is between how you *could* use JSON
> everywhere, and why you *should* use JSON everywhere. Perhaps I'm
> hearing the latter while you were only saying the former. ;)
>
> ~ Scott
>
>
> -----Original Message-----
> From: Karl Stubsjoen [mailto:kstubs@xxxxxxxxx]
> Sent: Tuesday, May 13, 2008 1:50 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
>
> Subject: Re: [xsl] XSL in the AJAX world
>
> To develop an Ajax solution means that you understand that you are
> after fast ligthweight and possibly frequent requests from client to
> server. The best data transport mechanism for this is JSON. Now with
> the support to create templates that transform JSON arrays into HTML
> content on the client's browser using JavaScript libraries like
> Prototype.js or JQuery, you can achieve a declerative solution,
> certainly no where near a true XML/XSL solution, but at least your
> aren't stuck writing out HTML elements in code.
>
> Having said the above, I ALWAYS develop my initial page load from an
> XML / XSL transformation. I may even grab the first batch of data in
> XML and transform with XSL. However, I than rely on simple Ajax
> requests to update and refresh active lists and content on the client.
>
> Oh, and don't forget, that the JSON string result is easily, and let
> me emphasize (EASILY) achieved with a server side JSON converter, such
> as JSON.Net. You can throw XML at the converter, complex structs, and
> even compose your own JSON results using the API in your server side
> code.
>
> Karl..
>
>
> On Tue, May 13, 2008 at 8:53 AM, Michael Dykman <mdykman@xxxxxxxxx>
> wrote:
> > On Tue, May 13, 2008 at 11:36 AM, Nick Fitzsimons
> <nick@xxxxxxxxxxxxxx> wrote:hat
> > > On Tue, May 13, 2008 4:19 pm, Andrew Shooner wrote:
> > > > I develop websites using the XSLT-based Symphony CMS, and another
> user
> > > > shared a comment he received that XML/XSLT was 'so 1990's'. It
> was
> > > > suggested to him to move on to JSON-based languages/technology.
> My
> > > > response was that it has to end up as XML in the end, so there is
> at
> > > > least some use for it.
> > > >
> > > > So my question is, are there many AJAX developers on this list,
> and if
> > > > so, how frequently, and in what capacity, do you use XSL in
> building or
> > > > customizing AJAX web applications?
> > > >
> > >
> > > I use XSLT to allow the same content to be served as either XML,
> HTML or
> > > JSON according to the client device's preference. Most JSON APIs
> offer
> > > similar choices; how many use XSLT to achieve this goal is a
> different
> > > question, but to my mind it's a perfect application of the
> technology.
> > >
> >
> > Warcraft.
> >
> > I'm building an application similar to Nick's model; XML output from
> > the application is matched with a device profile selecting an XSL1
> > template. Either the a processing instruction is merged in to the XML
> > or it is transformed, depending on the client device's capabilities.
> > In an Ajax envrivoment, JavaScript has access to the same transform
> > engine that the browser does which I use to do apply transforms on the
> > fly.
> >
> > If you want to see a really slick browser example with lots of modern
> > eye-candy, check out Blizzard's home page for Worlds of Warcraft.
> >
> >
> > --
> > - michael dykman
> > - mdykman@xxxxxxxxx
> >
> > - All models are wrong. Some models are useful.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] XSL in the AJAX world, Michael Dykman | Thread | Re: [xsl] XSL in the AJAX world, Jesper Tverskov |
| Re: [xsl] picking apart mixed conte, Craig Sampson | Date | Re: [xsl] picking apart mixed conte, David Carlisle |
| Month |