
Hi DevNewz Readers,
Pete's on the road this week. If here were here, he'd be writing
something witty and clever for this space. In his absence, I've
prepared a brief introduction to the use of XSL as a means to
display XML in HTML browsers.
It should be noted that this code will not display properly in
older browsers.
Best Wishes,
Brooks Jones
Guest Contributor

Those of you who have been reading DevNewz for a few months
already know that XML is one of the greatest things to come along.
It is, therefore, ironic that the very features of XML which give
it its strength and versatility also make it impractical for use
as a Web authoring language: most mainstream browsers don't know
what to do with it. This will change. Before you know it, every
Web browser on the planet will be able to handle XML just fine,
but for now we must live with those that are equipped to deal with
HTML.
XHTML, the XML application of the HTML standard, seems to be
a step in the right direction, but it's just a baby step. XHTML
is really no more than HTML on its best behavior. It uses (fundamentally)
the same tag designations to define analagous elements. Wonderful,
if you want your current pages to be properly displayed in an
XML-enabled browser, but lacking the aforementioned 'strength
and versatility' of XML.
Which brings me to one of my favorite things about XML: you can
define your own tags. Rather than fill a page with content that
consists of <p>aragraphs, your page can be made up of an
<introduction>,
<summary>,
<analysis>,
<speculation>,
<prevarication>,
<transmogrification>,
<thisgreatnation>,
<hyperventilation>, and
<conclusion>, or whatever makes sense to you.
Unfortunately, HTML browsers have been designed to ignore unknown
tags. It's fine to consider the future when building your Web
site, but one must also consider today. In order for most of today's
browsers to display your XML-marked-up code properly, it must
be converted to HTML, which is where XSL comes in.
XSL, the eXtensible Stylesheet Language, is actually a language
suite of sorts. The most important part of XSL is XSLT, which
transforms raw XML code into some other language that a browser
can understand, like HTML. As such, it allows you virtually unlimited
creative control over the structure and organization of your data
(using XML) while keeping you tethered to the real world (HTML).
As an example, let's consider a hypothetical fan site for an old
60s band that was still touring well into the 90s. The band in
question produced a number of albums, but it's their live performances,
and the bootleg tapes thereof, that have been at the root of their
success. The webmaster of this site wants to have a page at which
one can search through his (extensive!) collection of recordings.
For starters, his theoretical XML file might look something like
this:
<?xml
version="1.0"?>
<band>
<show>
<location>Way Big Stadium</location>
<date>
<year>1983</year>
<month>2</month>
<day>29</day>
</date>
<song>
<title>If You're Happy and You
Know It</title>
<key>CMajor</key>
<time>4:32</time>
<coolness>Fred's sax solo really
rocks!</coolness>
</song>
<song>
<title>Michael Row the Boat Ashore</title>
<key>GMajor</key>
<time>7:16</time>
<coolness>Segue to He's Got the
Whole
World</coolness>
</song>
.
.
</show>
<show>
.
.
</show>
</band> |
|
Click Here! |
The Oracle Technology Network is the only source for technical
information, downloads, training and code samples on Oracle9i,
the industrys only complete and cost-effective e-business
infrastructure. Be part of the fastest-growing developer community
in the world. Get your Oracle9i development software FREE
today!
Oracle Technology Network |
The problem with trying to use this file in its present form is
that Web browsers will ignore unrecognized markup and just display
the rest as best they can. The above XML file would appear as:
Way Big Stadium 1983 2 29 CMajor 4:32 Fred's sax solo really
rocks!...
(Notice that the text within the <title> element does not
appear in the browser window. It does, however, appear in the
browser's title bar. That's because <title> is a recognized
HTML tag. Try it.)
In order to display the content of this XML document properly,
our friend must create an XSL document which will serve as a template
for the eventual HTML output:
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr>
<th>Title</th>
<th>Key</th>
<th>Time</th>
<th>Really Cool Stuff About This
Performance</th>
</tr>
<tr>
<td><xsl:value-of select="band/show/song/title"/></td>
<td><xsl:value-of select="band/show/song/key"/></td>
<td><xsl:value-of select="band/show/song/time"/></td>
<td><xsl:value-of select="band/show/song/coolness"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
If our friend saves this document as deadandlovingit.xsl in the
same directory as his XML document, all he need do now is add
the line
|
<?xml-stylesheet type="text/xsl"
href="deadandlovingit.xsl"?>
to his original XML document, so that it looks like:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"
href="deadandlovingit.xsl"?>
<band>
<show>
.
.
</show>
</band>
|
and current versions of Internet Explorer will be able to display
it.
If any of you try this, you'll notice that it only creates a
table with two rows. We'll get to the explanations of how and
why, as well as the additional code to display the full table,
next time.
|