---
name: "XML::XSLT"
section: "3pm"
platform: "linux"
package: "libxml-xslt-perl"
version: "0.48-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/XML::XSLT"
---

# XML::XSLT(3pm)

A perl module for processing XSLT

## NAME

XML::XSLT - A perl module for processing XSLT

## SYNOPSIS

```
 use XML::XSLT;
 my $xslt = XML::XSLT->new ($xsl, warnings => 1);
 $xslt->transform ($xmlfile);
 print $xslt->toString;
 $xslt->dispose();
```

## DESCRIPTION

This module implements the W3C's XSLT specification. The goal is full implementation of this spec, but we have not yet achieved that. However, it already works well.  See "XML::XSLT Commands" for the current status of each command.

XML::XSLT makes use of XML::DOM and LWP::Simple, while XML::DOM uses XML::Parser.  Therefore XML::Parser, XML::DOM and LWP::Simple have to be installed properly for XML::XSLT to run.

## Specifying Sources

The stylesheets and the documents may be passed as filenames, file handles regular strings, string references or DOM-trees.  Functions that require sources (e.g. new), will accept either a named parameter or simply the argument.

Either of the following are allowed:

```
 my $xslt = XML::XSLT->new($xsl);
 my $xslt = XML::XSLT->new(Source => $xsl);
```

In documentation, the named parameter \`Source' is always shown, but it is never required.

### METHODS

- new(Source =\> $xml \[, %args\])

  Returns a new XSLT parser object.  Valid flags are:

  - DOMparser\_args

    Hashref of arguments to pass to the XML::DOM::Parser object's parse method.

  - variables

    Hashref of variables and their values for the stylesheet.

  - base

    Base of URL for file inclusion.

  - debug

    Turn on debugging messages.

  - warnings

    Turn on warning messages.

  - indent

    Starting amount of indention for debug messages.  Defaults to 0.

  - indent\_incr

    Amount to indent each level of debug message.  Defaults to 1.

- open\_xml(Source =\> $xml \[, %args\])

  Gives the XSLT object new XML to process.  Returns an XML::DOM object corresponding to the XML.

  - base

    The base URL to use for opening documents.

  - parser\_args

    Arguments to pase to the parser.

- open\_xsl(Source =\> $xml, \[, %args\])

  Gives the XSLT object a new stylesheet to use in processing XML. Returns an XML::DOM object corresponding to the stylesheet.  Any arguments present are passed to the XML::DOM::Parser.

  - base

    The base URL to use for opening documents.

  - parser\_args

    Arguments to pase to the parser.

- process(%variables)

  Processes the previously loaded XML through the stylesheet using the variables set in the argument.

- transform(Source =\> $xml \[, %args\])

  Processes the given XML through the stylesheet.  Returns an XML::DOM object corresponding to the transformed XML.  Any arguments present are passed to the XML::DOM::Parser.

- serve(Source =\> $xml \[, %args\])

  Processes the given XML through the stylesheet.  Returns a string containing the result.  Example:

  ```
    use XML::XSLT qw(serve);
    $xslt = XML::XSLT->new($xsl);
    print $xslt->serve $xml;
  ```

  - http\_headers

    If true, then prepends the appropriate HTTP headers (e.g. Content-Type, Content-Length);

    Defaults to true.

  - xml\_declaration

    If true, then the result contains the appropriate \<?xml?\> header.

    Defaults to true.

  - xml\_version

    The version of the XML.

    Defaults to 1.0.

  - doctype

    The type of DOCTYPE this document is.  Defaults to SYSTEM.

- xsl\_output\_method

  Get or set the \<xsl:output method= attribute.  Valid arguments are 'html', 'text' and 'xml'

- toString

  Returns the result of transforming the XML with the stylesheet as a string.

- to\_dom

  Returns the result of transforming the XML with the stylesheet as an XML::DOM object.

- media\_type

  Returns the media type (aka mime type) of the object.

- dispose

  Executes the `"dispose"` method on each XML::DOM object.

## XML::XSLT Commands

- xsl:apply-imports no

  Not supported yet.

- xsl:apply-templates limited

  Attribute 'select' is supported to the same extent as xsl:value-of supports path selections.

  Not supported yet: - attribute 'mode' - xsl:sort and xsl:with-param in content

- xsl:attribute partially

  Adds an attribute named to the value of the attribute 'name' and as value the stringified content-template.

  Not supported yet: - attribute 'namespace'

- xsl:attribute-set yes

  Partially

- xsl:call-template yes

  Takes attribute 'name' which selects xsl:template's by name.

  Weak support: - xsl:with-param (select attrib not supported)

  Not supported yet: - xsl:sort

- xsl:choose yes

  Tests sequentially all xsl:whens until one succeeds or until an xsl:otherwise is found. Limited test support, see xsl:when

- xsl:comment yes

  Supported.

- xsl:copy partially

  - xsl:copy-of limited

  Attribute 'select' functions as well as with xsl:value-of

- xsl:decimal-format no

  Not supported yet.

- xsl:element yes

  - xsl:fallback no

  Not supported yet.

- xsl:for-each limited

  Attribute 'select' functions as well as with xsl:value-of

  Not supported yet: - xsl:sort in content

- xsl:if limited

  Identical to xsl:when, but outside xsl:choose context.

- xsl:import no

  Not supported yet.

- xsl:include yes

  Takes attribute href, which can be relative-local,  absolute-local as well as an URL (preceded by identifier http:).

- xsl:key no

  Not supported yet.

- xsl:message no

  Not supported yet.

- xsl:namespace-alias no

  Not supported yet.

- xsl:number no

  Not supported yet.

- xsl:otherwise yes

  Supported.

- xsl:output limited

  Only the initial xsl:output element is used.  The "text" output method is not supported, but shouldn't be difficult to implement.  Only the "doctype-public", "doctype-system", "omit-xml-declaration", "method", and "encoding" attributes have any support.

- xsl:param experimental

  Synonym for xsl:variable (currently). See xsl:variable for support.

- xsl:preserve-space no

  Not supported yet. Whitespace is always preserved.

- xsl:processing-instruction yes

  Supported.

- xsl:sort no

  Not supported yet.

- xsl:strip-space no

  Not supported yet. No whitespace is stripped.

- xsl:stylesheet limited

  Minor namespace support: other namespace than 'xsl:' for xsl-commands is allowed if xmlns-attribute is present. xmlns URL is verified. Other attributes are ignored.

- xsl:template limited

  Attribute 'name' and 'match' are supported to minor extend. ('name' must match exactly and 'match' must match with full path or no path)

  Not supported yet: - attributes 'priority' and 'mode'

- xsl:text yes

  Supported.

- xsl:transform limited

  Synonym for xsl:stylesheet

- xsl:value-of limited

  Inserts attribute or element values. Limited support:

  \<xsl:value-of select="."/\>

  \<xsl:value-of select="/root-elem"/\>

  \<xsl:value-of select="elem"/\>

  \<xsl:value-of select="//elem"/\>

  \<xsl:value-of select="elem\[n\]"/\>

  \<xsl:value-of select="//elem\[n\]"/\>

  \<xsl:value-of select="@attr"/\>

  \<xsl:value-of select="*text()*"/\>

  \<xsl:value-of select="processing-*instruction()*"/\>

  \<xsl:value-of select="*comment()*"/\>

  and combinations of these.

  Not supported yet: - attribute 'disable-output-escaping'

- xsl:variable partial or from literal text in the stylesheet.

  - xsl:when limited

  Only inside xsl:choose. Limited test support:

  \<xsl:when test="@attr='value'"\>

  \<xsl:when test="elem='value'"\>

  \<xsl:when test="path/\[@attr='value'\]"\>

  \<xsl:when test="path/\[elem='value'\]"\>

  \<xsl:when test="path"\>

  path is supported to the same extend as with xsl:value-of

- xsl:with-param experimental

  It is currently not functioning. (or is it?)

## SUPPORT

General information, bug reporting tools, the latest version, mailing lists, etc. can be found at the XML::XSLT homepage:

```
  http://xmlxslt.sourceforge.net/
```

## DEPRECATIONS

Methods and interfaces from previous versions that are not documented in this version are deprecated.  Each of these deprecations can still be used but will produce a warning when the deprecation is first used.  You can use the old interfaces without warnings by passing `"new()"` the flag `"use_deprecated"`.  Example:

```
 $parser = XML::XSLT->new($xsl, "FILE",
                          use_deprecated => 1);
```

The deprecated methods will disappear by the time a 1.0 release is made.

The deprecated methods are :

- output\_string

  use toString instead

- result\_string

  use toString instead

- output

  use toString instead

- result

  use toString instead

- result\_mime\_type

  use media\_type instead

- output\_mime\_type

  use media\_type instead

- result\_tree

  use to\_dom instead

- output\_tree

  use to\_dom instead

- transform\_document

  use transform instead

- process\_project

  use process instead

- open\_project

  use `"Source"` argument to ***new()*** and **transform** instead.

- print\_output

  use ***serve()*** instead.

## BUGS

Yes.

## HISTORY

Geert Josten and Egon Willighagen developed and maintained XML::XSLT up to version 0.22.  At that point, Mark Hershberger started moving the project to Sourceforge and began working on it with Bron Gondwana.

## LICENCE

Copyright (c) 1999 Geert Josten & Egon Willighagen. All Rights Reserved.  This module is free software, and may be distributed under the same terms and conditions as Perl.

## AUTHORS

Geert Josten \<gjosten@sci.kun.nl\>

Egon Willighagen \<egonw@sci.kun.nl\>

Mark A. Hershberger \<mah@everybody.org\>

Bron Gondwana \<perlcode@brong.net\>

Jonathan Stowe \<jns@gellyfish.com\>

## SEE ALSO

XML::DOM, LWP::Simple, XML::Parser
