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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--