[Top] [Contents] [Index] [ ? ]

XSLT-process minor mode

This document describes the XSLT-process, a minor mode for (X)Emacs which allows running an XSLT processor on a buffer.


1. Current version

[Here are different versions of this document: PDF, PS]

The current version of XSLT-process is 1.2.1. You can download it from here.

For a list of changes between since the last version, please see section 4. Changes.


2. What is it and how to use it?

Have you ever developed XML applications using XSLT? If so you probably felt the need of viewing the result of applying the XSLT processor on the XML file using an XSLT sheet you have been working on right inside your (X)Emacs, without having to go to a terminal or to the Web browser. This minor mode allows you to do it!

The XSLT-process minor mode allows you, while you're inside a buffer for which this minor mode is enabled, to enter a few keystrokes that will invoke the XSLT processor of choice on the buffer. The result is displayed in another (X)Emacs buffer, that allows you to quickly view and inspect the results.

The XSLT file that's used to process the file should be specified inside the XML file using the XML processing instruction `xml-stylesheet', like this:

 
<?xml-stylesheet href="URL/to/XSLT/file" type="text/xsl"?>

You can use any URI understood by your Java system, e.g. file, HTTP or FTP, to refer to a stylesheet. The XSLT engine will download the stylesheet from the remote location and make use of it locally. With the TrAX interface (see section 3.1 Supported XSLT processors), the stylesheet is cached in the processor, so further invocations of the XSLT processor won't process the stylesheet again, unless the stylesheet is modified.

You can use URLs which are relative to the location of your XML file. For example if you have an XSLT file `page-html.xsl' in the same directory as the XML file you can simply have inside the XML file the following processing instruction:

 
<?xml-stylesheet href="page-html.xsl" type="text/xsl"?>

The XSLT-process mode was designed to work with any XSLT processor written in the Java language. Support for processors written in programming languages other than Java may require some work.

Here is a screenshot of the XSLT-process mode in action.


3. Installation

This mode depends on a few other packages:

If the above packages are not already installed on your system, you can install them in an `emacs' directory in your home directory. Then add the following lines in your `.emacs' configuration file:

 
(setq load-path
      (append (list "~/emacs/xslt-process-1.2.1/lisp"
		    "~/emacs/jde/lisp"
		    "~/emacs/semantic"
		    "~/emacs/speedbar"
		    ) load-path))

(autoload 'xslt-process-mode "xslt-process"
          "Run XSLT processor on buffer" t)

These lines add the needed packages in your emacs `load-path' variable, and make known the XSLT-process minor mode to your (X)Emacs.

After the XSLT-process mode has been made available to (X)Emacs, you can enable the minor mode on a per-buffer basis by running `M-x xslt-process-mode'. Or you can invoke `xslt-process-mode' from the mode's hook, see section 3.2 Setting up PSGML with XSLT-process for an example on how you can do it.


3.1 Supported XSLT processors

In this version the XSLT-process minor mode supports the following XSLT processors:


3.2 Setting up PSGML with XSLT-process

The XSLT-process minor mode works really nice in conjuction with the PSGML major mode for SGML and XML editing.

To setup the XSLT-process minor mode to be automatically enabled whenever you edit an XML file under PSGML, add the below lines in your `.emacs'. I assume you have already added the configuration lines mentioned in see section 3. Installation.

 
(setq auto-mode-alist
      (append '(("\\.xml$" . xml-mode)) auto-mode-alist))

(add-hook 'xml-mode-hook 'xslt-process-mode)

If you're using a different major mode for editing XML documents, you can setup the mode's hook in a similar way as above to automatically enable the XSLT-process minor mode.


3.3 Key binding

To invoke the XSLT processor on a file, position the point inside the buffer and type `C-c C-x C-v'. You can customize the key binding by invoking `M-x customize-group RET xslt-process' and updating the key binding in the appropriate customization option.

The first time you invoke the XSLT processor on a buffer, the XSLT-process mode will start-up the Java Bean Shell, a Java helper program as a separate process running in the background. This operation may take some time, however further invocations of the processor are very fast as the JVM is started and all the classes are already loaded.

The XSLT processor will look into your XML file for an `xml-stylesheet' processing instruction specifying the XSLT file to be used to process the file.


3.4 Customization

There are several things you might want to customize. You can get to the customization page by typing `M-x customize-group RET xslt-process' or by choosing the following menu path in XEmacs: `Options -> Emacs -> Programming -> Tools -> Xslt Process'.

To choose the XSLT processor of your choice update the Default Processor option.

If you're using Cocoon as the processor, you should also specify the location of the properties file, otherwise you'll get an error at runtime.


3.5 Temporarily changing the XSLT processor

If you want to experiment what are the results of your stylesheets using different XSLT processors, going through the customization page and changing the processor can be quite an involved process.

You can specify the processor you want to be applied to your file right inside the file. Just add a Local Variables section at the end of your XML file and specify within it what should be the XSLT processor to be invoked using the `processor' variable. For example, by adding the following section at the end of your file, you specify Saxon to be used as the XSLT processor, no matter what is the global setting in the customization page:

 
<!--
Local Variables:
processor: Saxon
End:
-->

In this release, the acceptable values for `processor' are `TrAX', `Saxon', `Xalan1', and `Cocoon1'. By replacing the value of `processor', you can run any of the supported processors on your file.

Note however that in this release the TrAX processor which is chosen is the first processor that appears in the `CLASSPATH'. If you want to experiment with multiple TrAX processors, you will need to change the order of the processors in the `CLASSPATH' and restart the BSH process (just kill the `*bsh*' buffer, the next time you invoke the XSLT processor, XSLT-process will automatically restart BSH).


3.5.1 Additional parameters passed to Cocoon

It is possible to pass additional parameters to a Cocoon processor using `user-agent' local variable in an Emacs buffer:

 
<!--
Local Variables:
processor: Cocoon1
user-agent: UP.Browser
End:
-->

In this example the user agent of the requesting browser appears to Cocoon as being UP.Browser. If no user agent is specified, by default Cocoon will consider the requesting browser as being HTML capable, thus transforming the output to HTML.


4. Changes

These are the changes since the 1.2 release:

This is the list of changes since the 1.1 release.

This is the list of changes since the 1.0 release.


5. Future enhancements

I have few ideas on how this mode could be improved, however they may or may not appear in the next version of this package.


6. Feedback

I would appreciate any feedback on the XSLT-process mode; please send it to Ovidiu Predescu.

The home page of the XSLT-process package is:

http://www.geocities.com/SiliconValley/Monitor/7464/emacs/xslt-process/.


[Top] [Contents] [Index] [ ? ]

Table of Contents


[Top] [Contents] [Index] [ ? ]

Short Table of Contents

1. Current version
2. What is it and how to use it?
3. Installation
4. Changes
5. Future enhancements
6. Feedback

[Top] [Contents] [Index] [ ? ]

About this document

This document was generated by Ovidiu Predescu on March, 2 2001 using texi2html