XML::XSLT(3) User Contributed Perl Documentation XML::XSLT(3)NAMEXML::XSLT - A perl module for processing XSLT
xsl_output_method
Get or set the <xsl:output method= attribute. Valid arguments are
'html', 'text' and 'xml'
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
containg the result. Example:
use XML::XSLTqw(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.
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
Reserverd. 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
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
Around line 880:
'=item' outside of any '=over'
Around line 3581:
You forgot a '=back' before '=head1'
perl v5.18.1 2004-02-20 XML::XSLT(3)