Template::Plugin::XML::DOM 2.16 review

Download
by rbytes.net on

Template::Plugin::XML::DOM is a plugin interface to XML::DOM. SYNOPSIS # load plugin [% USE dom = XML.DOM %] #

License: GPL (GNU General Public License)
File size: 25K
Developer: Andy Wardley and Simon Matthews
0 stars award from rbytes.net

Template::Plugin::XML::DOM is a plugin interface to XML::DOM.

SYNOPSIS

# load plugin
[% USE dom = XML.DOM %]

# also provide XML::Parser options
[% USE dom = XML.DOM(ProtocolEncoding = 'ISO-8859-1') %]

# parse an XML file
[% doc = dom.parse(filename) %]
[% doc = dom.parse(file = filename) %]

# parse XML text
[% doc = dom.parse(xmltext) %]
[% doc = dom.parse(text = xmltext) %]

# call any XML::DOM methods on document/element nodes
[% FOREACH node = doc.getElementsByTagName('report') %]
* [% node.getAttribute('title') %] # or [% node.title %]
[% END %]

# define VIEW to present node(s)
[% VIEW report notfound='xmlstring' %]
# handler block for a ... element
[% BLOCK report %]
[% item.content(view) %]
[% END %]

# handler block for a ... element
[% BLOCK section %]
< h1 >[% item.title %]< /h1 >
[% item.content(view) %]
[% END %]

# default template block converts item to string
[% BLOCK xmlstring; item.toString; END %]

# block to generate simple text
[% BLOCK text; item; END %]
[% END %]

# now present node (and children) via view
[% report.print(node) %]

# or print node content via view
[% node.content(report) %]

# following methods are soon to be deprecated in favour of views
[% node.toTemplate %]
[% node.childrenToTemplate %]

This is a Template Toolkit plugin interfacing to the XML::DOM module. The plugin loads the XML::DOM module and creates an XML::DOM::Parser object which is stored internally. The parse() method can then be called on the plugin to parse an XML stream into a DOM document.

[% USE dom = XML.DOM %]
[% doc = dom.parse('/tmp/myxmlfile') %]

The XML::DOM plugin object (i.e. 'dom' in these examples) acts as a sentinel for the documents it creates ('doc' and any others). When the plugin object goes out of scope at the end of the current template, it will automatically call dispose() on any documents that it has created. Note that if you dispose of the the plugin object before the end of the block (i.e. by assigning a new value to the 'dom' variable) then the documents will also be disposed at that point and should not be used thereafter.

[% USE dom = XML.DOM %]
[% doc = dom.parse('/tmp/myfile') %]
[% dom = 'new value' %] # releases XML.DOM plugin and calls
# dispose() on 'doc', so don't use it!

The plugin constructor will also accept configuration options destined for the XML::Parser object:

[% USE dom = XML.DOM(ProtocolEncoding = 'ISO-8859-1') %]

Requirements:
Perl

Template::Plugin::XML::DOM 2.16 search tags