XML::XSLT - A perl module for processing XSLT
| Use Case | Command | Description |
|---|---|---|
| Create XSLT processor | XML::XSLT->new($xsl, %args) | Return a new XSLT parser object with optional flags (warnings, variables, etc.) |
| Transform XML | $xslt->transform($xml) | Process XML through the stylesheet and return a DOM object |
| Get result as string | $xslt->toString | Return the transformed result as a string |
| Serve result with HTTP headers | $xslt->serve($xml) | Process XML and return result string with optional Content-Type and Content-Length headers |
| Reuse XSLT for new XML | $xslt->open_xml($xml) | Load new XML into the existing XSLT object |
| Change stylesheet | $xslt->open_xsl($xsl) | Replace the stylesheet in the XSLT object |
| Process with variables | $xslt->process(%variables) | Run transformation using previously loaded XML and stylesheet, with parameters |
use XML::XSLT;
my $xslt = XML::XSLT->new($xsl, warnings => 1);
$xslt->transform($xmlfile);
print $xslt->toString;
$xslt->dispose();
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.
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.
Returns a new XSLT parser object. Valid flags are:
Gives the XSLT object new XML to process. Returns an XML::DOM object corresponding to the XML.
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.
Processes the previously loaded XML through the stylesheet using the variables set in the argument.
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.
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;
<?xml?> header. Defaults to true.Get or set the <xsl:output method= attribute. Valid arguments are 'html', 'text' and 'xml'.
Returns the result of transforming the XML with the stylesheet as a string.
Returns the result of transforming the XML with the stylesheet as an XML::DOM object.
Returns the media type (aka mime type) of the object.
Executes the "dispose" method on each XML::DOM object.
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:templates 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 — partiallyxsl:copy-of — limited — Attribute 'select' functions as well as with xsl:value-of.xsl:decimal-format — no — Not supported yet.xsl:element — yesxsl: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 extent. ('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 extent as with xsl:value-of.xsl:with-param — experimental — It is currently not functioning. (or is it?)General information, bug reporting tools, the latest version, mailing lists, etc. can be found at the XML::XSLT homepage:
http://xmlxslt.sourceforge.net/
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 insteadresult_string — use toString insteadoutput — use toString insteadresult — use toString insteadresult_mime_type — use media_type insteadoutput_mime_type — use media_type insteadresult_tree — use to_dom insteadoutput_tree — use to_dom insteadtransform_document — use transform insteadprocess_project — use process insteadopen_project — use Source argument to new() and transform instead.print_output — use serve() instead.Yes.
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.
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.
Generated by phpman v4.10.0-7-g98e9fd5 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-09-15 12:43 @216.73.216.74
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)