Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

Active Server Pages
JSP/Java Servlets
Microsoft SQL Server
Daily Backup
Dedicated Servers
Streaming Audio/Video
24-hour Support    

jobs.webdeveloper.com

Hiermenus


e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


How It Works

October 30, 2000

In Step 1, we specified an XSL style sheet. The first couple of lines are standard boilerplate:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
They specify the version of XML and the namespace for the XSL style sheet.

The next line is more important:

<xsl:template match="/">
This "/" string indicates that the following template should be applied to the root node of the XML document, i.e. to all of it.

The next dozen or so lines (beginning with <html> and ending with </html>) define the XHTML template. Within this template are some XSL instructions for extracting data from the XML document. Look at the <title> element:

<title>Film Library:<xsl:value-of
select="filmlibrary/name"/></title>
The <xsl:value-of> element says that we want to use the element content for the element that matches the value of the select attribute. In this case, we are going to use the value of the <name> element that is a child of the <filmlibrary> element.

Thus:

<title>Film Library:<xsl:value-of
select="filmlibrary/name"/></title>
gets transformed into:
<title>Film Library:Classic Films</title>
because 'Classic Films' is the content of then <name> tag contained within the <filmlibrary> tag in the XML file:
<filmlibrary>
 <name>Classic Films</name>
That is, <xsl:value-of select="filmlibrary/name"/> is replaced with Classic Films because 'Classic Films' is the value of the "filmlibrary/name" selection used in the <xsl:value-of> element. (One may think of it almost as a programmed find-and-replace technique.)

The next occurrence of an XSL element is in the <table> element:

<xsl:for-each select="filmlibrary/movie">
The <xsl:for-each> element instructs the browser that we want to repeat the following template for each occurrence of the element which matches the value of the select attribute. In this case, we are going to repeat the template for each <movie> element that is a child of the <filmlibrary> element.

Within this for-each loop are a set of <xsl:value-of> elements which put the value of the <title>, <director>, <year>, and <genre> elements into the table:

lt;tr>
lt;td><xsl:value-of select="title"/></td>
lt;td><xsl:value-of select="credits/director"/></td>
<td><xsl:value-of select="year"/></td>
<td><xsl:value-of select="genre"/></td>
</tr>
So even though we have two <movie> elements within our XML file, we only need the one <xsl:for-each> block in our XSL file to perform the same operation on both the <movie> elements. Obviously, we could have as many <movie> elements as we wanted in our file and we would still need only one <xsl:for-each> element to process all of them.

In Step 2, we authored the XML document. Like the XML style sheet, the first line indicates the version of XML that we are using:

<?xml version="1.0"?>
The second line associates the style sheet with our XML document:
<?xml-stylesheet type="text/xsl" href="movie1.xsl"?>
The rest of the document contains the content that gets transformed by the XSL style sheet.

In Step 5, we create a second XSL style sheet. Looking at the first couple of lines in this style sheet:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
we see the same XML version and XSL style sheet namespace identifiers, as well as the <xsl:template> element, as in the previous sheet.

Where this style sheet departs from the previous one is that rather than formatting the XML document as a table, we format it using headers and paragraphs.

Looking at the <body> element, we wrote:

<body>
 <xsl:for-each select="filmlibrary/movie">
This means that the element content of the <body> element will be based on each occurrence of the <movie> element in our XML document.

The <h1> element is defined by the following lines of XML:

<h1 style="text-align: center">
<xsl:value-of select="title"/>
</h1>
 
The <xsl:value-of> element means that the <h1> element will contain the content of the <title> element. Similarly, the <h2> element will contain the content of the <year> and <director> elements:
<h2 style="text-align: center">
<xsl:value-of select="year"/> <xsl:
	value-of select="credits/director"/>
</h2>
[Note: The 2nd and 3rd lines above are one line. They were split for formatting purposes]

and the <p> element will contain the content of the <genre> and <plot> elements:

<p>
<xsl:value-of select="genre"/>.<xsl:value-of select="plot"/>
</p>
In Step 7, we associate the style sheet with the XML document:
<?xml-stylesheet type='text/xsl' href='movie2.xsl'?>
When we load the XML document into Microsoft Internet Explorer, the document is then transformed using the associated style sheet.

Summary

In this chapter, we learned a little about media types:

  • Using media types to manage different types of web devices
  • Managing media types using the <style> element
  • Managing media types using the <link> element
  • Controlling how documents are printed using @media and @page rules
  • Forcing page breaks with page breaking properties
We also learned about three types of problems affecting our ability to target different devices:
  • Device constraints
  • User agent constraints
  • Human interface device constraints
Finally, we introduced some strategies for overcoming these constraints. We can author different versions of our content for different devices, use tools that adapt content to different devices, or generate content based on the type of device.
Title: Beginning XHTML
ISBN: 1861003439
US Price: $ 39.99
Canadian Price: C$ 59.95
UK Price: £ 28.99
Publication Date: Mar 00
Pages: 733
©1999 Wrox Press Limited, US and UK.

Using XSL Transformations
Beginning XHTML


Up to => Home / Authoring / Languages / XML / BeginningXHTML




Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers