Subject: RE: XSLT Templates in a Web Browser
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sun, 31 Dec 2006 15:28:58 -0000
|
In general the relationship of source documents to stylesheets is
many-to-many, and naming your source document within the stylesheet is just
as unsatisfactory as naming the stylesheet within the source document. If
you're going to use client-side transformation, it's best to control the
process from Javascript within your HTML pages, using an API such as Sarissa
to achieve cross-browser portability.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Thomas Stone [mailto:stonethomasjames@xxxxxxxxx]
> Sent: 31 December 2006 09:37
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: XSLT Templates in a Web Browser
>
> This is a post of one way to test multiple XSLT templates
> producing web browser output against a single source XML document.
>
> I am relatively new to XSLT, though I have been
> programming since the Commodore 64. While testing the
> intricacies of the language, I primarily used it to transform
> XML data into HTML output. The XML document referenced an
> XSTL stylesheet. When I double-clicked on the .xml file, the
> web browser found its associated XSLT stylesheet and
> displayed the HTML output. This really helped in getting
> "hands-on" experience with instant feed-back.
>
> The least satifactory part of this process was having to
> edit my XML document every time I wanted to display the data
> differently - to change the <?xml-stylesheet type="text/xsl"
> href="Transform.xml"?> line. I an old control freak when it
> comes to data files, and storing the desired "program" to run
> against a data file INSIDE the data file just didn't feel
> right. The solution I came up with uses the document() function.
>
> The trick I found was to rename my XSLT stylesheet to .xml
> so the browser will open it and look for an associated
> stylesheet instead of opening the source XML document. The
> following is an example of my stylesheet.
>
> <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet
> type="text/xsl" href="Transform.xml"?>
>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:variable name="transform_document">Test.xml</xsl:variable>
>
> <xsl:template match="/">
> <xsl:apply-templates
> select="document($transform_document)" mode="document"/>
> </xsl:template>
>
> <xsl:template match="/" mode="document">
> <xsl:apply-templates />
> </xsl:template>
> </xsl:stylesheet>
>
>
> This makes my stylesheet its own stylesheet. The document
> I want it to transform is stored in a variablee near the top
> of the sheet - in this case it is called "Test.xml". If I
> make a copy of this stylesheet, and change the
> <?xml-stylesheet type="text/xsl" href="Transform.xml"?> line
> to match the copy's name, I can make changes in the second
> stylesheet and immediately compare the changes in resulting
> HTML output against my original. I did not have to edit my
> XML document.
>
> A second benefit of this is that the source XML document
> does not have to be named as .xml. Virtual Reality Modeling
> Language text content in an X3D file could be referenced by
> changing the transform_document variable declaration to state
> "HelloWorld.x3d". An Excel document that has been saved in
> XML format or the Open Office documents could be source
> documents just as easily, showing the data in a web browser
> instead of their native application.
>
> --
> ___________________________________________________
> Search for products and services at:
> http://search.mail.com
|