SYNOPSIS

    [% USE XML;
       dom    = XML.dom('foo.xml');
       xpath  = XML.xpath('bar.xml');
       simple = XML.simple('baz.xml');
       rss    = XML.simple('news.rdf');
    %]

[% USE XML(file='foo.xml'); dom = XML.dom xpath = XML.xpath # ...etc... %]

[% USE XML(dir='/path/to/xml'); file = XML.file('foo.xml' ); dom = file.dom xpath = file.xpath # ...etc... %]

DESCRIPTION

The Template-XML distribution provides a number of Template Toolkit plugin modules for working with \s-1XML\s0.

The Template::Plugin::XML module is a front-end to the various other \s-1XML\s0 plugin modules. Through this you can access \s-1XML\s0 files and directories of \s-1XML\s0 files via the Template::Plugin::XML::File and Template::Plugin::XML::Directory modules (which subclass from the Template::Plugin::File and Template::Plugin::Directory modules respectively). You can then create a Document Object Model (\s-1DOM\s0) from an \s-1XML\s0 file (Template::Plugin::XML::DOM), examine it using XPath queries (Template::Plugin::XML::XPath), turn it into a Perl data structure (Template::Plugin::XML::Simple) or parse it as an \s-1RSS\s0 (\s-1RDF\s0 Site Summary) file.

The basic \s-1XML\s0 plugins were distributed as part of the Template Toolkit until version 2.15 released in May 2006. At this time they were extracted into this separate Template-XML distribution and an alpha version of this Template::Plugin::XML front-end module was added.

The Template::Plugin::XML module is still in development and not guaranteed to work correctly yet. However, all the other \s-1XML\s0 plugins are more-or-less exactly as they were in \s-1TT\s0 version 2.14 and should work as normal.

For general information on the Template Toolkit see the documentation for the Template module or <http://template-toolkit.org>. For information on using plugins, see Template::Plugins and \*(L"\s-1USE\s0\*(R" in Template::Manual::Directives. For further information on \s-1XML\s0, see <http://xml.com/>.

METHODS

The \s-1XML\s0 plugin module provides a number of methods to create various other \s-1XML\s0 plugin objects.

\$1

Creates a Template::Plugin::XML::File object. This is a subclass of Template::Plugin::File. Creates a Template::Plugin::XML::Directory object. This is a subclass of Template::Plugin::Directory. Generate a Document Object Module from an \s-1XML\s0 file. This can be called against a directory, file or an \s-1XML\s0 plugin object, as long as the source \s-1XML\s0 filename is defined somewhere along the line.

[% dom = XML.dom(filename) %]

[% file = XML.file(filename); dom = file.dom %]

[% dir = XML.dir(dirname); dom = dir.dom(filename) %] Perform XPath queries on the file. Like the dom() method, xpath() can be called against a file, directory or an \s-1XML\s0 plugin object.

[% xpath = XML.xpath(filename) %]

[% file = XML.file(filename); xpath = file.xpath %]

[% dir = XML.dir(dirname); xpath = dir.xpath(filename) %] \s-1TODO:\s0 As per dom() and xpath() but for XML::Simple \s-1TODO:\s0 As per dom(), xpath() and simple() but for \s-1XML::RSS\s0

XML PLUGINS

These are the \s-1XML\s0 plugins provided in this distribution. Front-end module to the \s-1XML\s0 plugin collection. This plugin module is used to represent individual \s-1XML\s0 files. It is a subclass of the Template::Plugin::File module, providing the additional dom(), xpath(), simple() and other methods relevant to \s-1XML\s0 files. This plugin module is used to represent directories of \s-1XML\s0 files. It is a subclass of the Template::Plugin::Directory module and provides the same additional \s-1XML\s0 related methods as Template::Plugin::XML::File. Plugin interface providing access to the \s-1XML::DOM\s0 module.

[% USE XD = XML.Dom %] [% dom = XD.parse_file('example.xml') %] [% pages = dom.getElementsByTagName('page') %] Plugin interface providing access to the \s-1XML::RSS\s0 module.

[% USE news = XML.RSS('news.rdf') -%] [% FOREACH item IN news.items -%] * [% item.title %] [% END %] Plugin interface providing access to the XML::Simple module.

[% USE xml = XML.Simple('example.xml') %] Plugin interface providing access to the XML::XPath module.

[% USE xpath = XML.XPath('example.xml'); bar = xpath.find('/foo/bar'); %]

AUTHORS

Andy Wardley wrote the Template Toolkit plugin modules, with assistance from Simon Matthews in the case of the \s-1XML::DOM\s0 plugin. Matt Sergeant wrote the XML::XPath module. Enno Derksen and Clark Cooper wrote the \s-1XML::DOM\s0 module. Jonathan Eisenzopf wrote the \s-1XML::RSS\s0 module. Grant McLean wrote the XML::Simple module. Clark Cooper and Larry Wall wrote the XML::Parser module. James Clark wrote the expat library.

COPYRIGHT

Copyright (C) 1996-2007 Andy Wardley. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

RELATED TO Template::Plugin::XML…

Template, Template::Plugins, Template::Plugin::XML::DOM, Template::Plugin::XML::RSS, Template::Plugin::XML::Simple, Template::Plugin::XML::XPath