Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## nu.xom.xslt
Class XSLTransform

    Object
      nu.xom.xslt.XSLTransform

public final class XSLTransform
extends Object

Serves as an interface to a TrAX aware XSLT processor such as Xalan or Saxon. The following example shows how to apply an XSL Transformation to a XOM document and get the transformation result in the form of a XOM `Nodes`:

>     public static Nodes transform(Document in)
>        throws XSLException, ParsingException, IOException {
>          Builder builder = new Builder();
>          Document stylesheet = builder.build("mystylesheet.xsl");
>          XSLTransform stylesheet = new XSLTransform(stylesheet);
>          return stylesheet.transform(doc);
>      }

XOM relies on TrAX to perform the transformation. The `javax.xml.transform.TransformerFactory` Java system property determines which XSLT engine TrAX uses. Its value should be the fully qualified name of the implementation of the abstract `javax.xml.transform.TransformerFactory` class. Values of this property for popular XSLT processors include:

- Saxon 6.x: `com.icl.saxon.TransformerFactoryImpl`
- Saxon 7.x and 8.x: `net.sf.saxon.TransformerFactoryImpl`
- Xalan interpretive: `org.apache.xalan.processor.TransformerFactoryImpl`
- Xalan XSLTC: `org.apache.xalan.xsltc.trax.TransformerFactoryImpl`
- jd.xslt: `jd.xml.xslt.trax.TransformerFactoryImpl`
- Oracle: `oracle.xml.jaxp.JXSAXTransformerFactory`
- Java 1.5 bundled Xalan: `com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl`

This property can be set in all the usual ways a Java system property can be set. TrAX picks from them in this order:

1. The most recent value specified by invoking `System.setProperty("javax.xml.transform.TransformerFactory", "`classname`")`
2. The value specified at the command line using the `-Djavax.xml.transform.TransformerFactory=classname` option to the java interpreter
3. The class named in the `lib/jaxp.properties` properties file in the JRE directory, in a line like this one:

       javax.xml.parsers.DocumentBuilderFactory=classname

4. The class named in the `META-INF/services/javax.xml.transform.TransformerFactory` file in the JAR archives available to the runtime
5. Finally, if all of the above options fail, a default implementation is chosen. In Sun's JDK 1.4.0 and 1.4.1, this is Xalan 2.2d10. In JDK 1.4.2, this is Xalan 2.4. In JDK 1.4.2_02, this is Xalan 2.4.1. In JDK 1.4.2_03, 1.5 beta 2, and 1.5 RC1 this is Xalan 2.5.2. In JDK 1.4.2_05, this is Xalan 2.4.1. (Yes, Sun appears to have reverted to 2.4.1 in 1.4.2_05.)

Version:
  1.0b5
Author:
  Elliotte Rusty Harold

Constructor Summary
`XSLTransform(Document stylesheet)` Creates a new `XSLTransform` by reading the stylesheet from the supplied document.
`XSLTransform(Document stylesheet, NodeFactory factory)` Creates a new `XSLTransform` by reading the stylesheet from the supplied document.

Method Summary
`void` | `setNodeFactory(NodeFactory factory)` Deprecated. As of beta 5, replaced by `XSLTransform(Document,NodeFactory)`
`static Document` | `toDocument(Nodes nodes)` Builds a `Document` object from a `Nodes` object.
`String` | `toString()` Returns a string form of this `XSLTransform`, suitable for debugging.
`Nodes` | `transform(Document in)` Creates a new `Nodes` from the input `Document` by applying this object's stylesheet.
`Nodes` | `transform(Nodes in)` Creates a new `Nodes` object from the input `Nodes` object by applying this object's stylesheet.

Methods inherited from class Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### XSLTransform

    public XSLTransform(Document stylesheet)
                 throws XSLException

  Creates a new `XSLTransform` by reading the stylesheet from the supplied document.

Parameters:
  `stylesheet` - document containing the stylesheet
Throws:
  `XSLException` - when the supplied document is not syntactically correct XSLT

### XSLTransform

    public XSLTransform(Document stylesheet,
                        NodeFactory factory)
                 throws XSLException

  Creates a new `XSLTransform` by reading the stylesheet from the supplied document. The supplied factory will be used to create all nodes in the result tree, so that a transform can create instances of subclasses of the standard XOM classes. Because an XSL transformation generates a list of nodes rather than a document, the factory's `startMakingDocument` and `finishMakingDocument` methods are not called.

Parameters:
  `stylesheet` - document containing the stylesheet
  `factory` - the factory used to build nodes in the result tree
Throws:
  `XSLException` - when the supplied document is not syntactically correct XSLT

Method Detail

### transform

    public Nodes transform(Document in)
                    throws XSLException

  Creates a new `Nodes` from the input `Document` by applying this object's stylesheet. The original `Document` is not changed.

  Parameters:
    `in` - document to transform
  Returns:
    a `Nodes` containing the result of the transformation
  Throws:
    `XSLException` - if the transformation fails, normally due to an XSLT error

### transform

    public Nodes transform(Nodes in)
                    throws XSLException

  Creates a new `Nodes` object from the input `Nodes` object by applying this object's stylesheet. The original `Nodes` object is not changed.

  Parameters:
    `in` - document to transform
  Returns:
    a `Nodes` containing the result of the transformation
  Throws:
    `XSLException` - if the transformation fails, normally due to an XSLT error

### setNodeFactory

    public void setNodeFactory(NodeFactory factory)

  Deprecated. As of beta 5, replaced by `XSLTransform(Document,NodeFactory)`

  Sets the factory used to construct nodes in the output tree. Passing null uses a ``nu.xom.NodeFactory``.

  Because an XSL transformation generates a list of nodes rather than a document, the factory's `startMakingDocument` and `finishMakingDocument` methods are not called.

  Parameters:
    `factory` - the node factory used to construct nodes in the output tree

### toDocument

    public static Document toDocument(Nodes nodes)

  Builds a `Document` object from a `Nodes` object. This is useful when the stylesheet is known to produce a well-formed document with a single root element and no text or attribute nodes. If the stylesheet produces anything else, an `XMLException` is thrown.

  Parameters:
    `nodes` - the nodes to be placed in the new document
  Returns:
    a document containing the nodes
  Throws:
    `XMLException` - if `nodes` does not contain exactly one element or if it contains any text nodes or attributes

### toString

    public String toString()

  Returns a string form of this `XSLTransform`, suitable for debugging.

  Returns:
    debugging string

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright 2002-2004 Elliotte Rusty Harold
elharo@metalab.unc.edu