XML::Template v3.00
-------------------
1.4.03
- I have finally started a detailed record of changes!
- Added an error if a document has no content.
- XPath variables now return a reference to an XPath object. To get
string values, use the appropriate variable subroutine.
- Added an AUTOLOAD method to XML::Template::Util which just calls the
subroutine as a method of the XML::Template variable value.
- XPath objects are now cached for each unique full variable name.
- XML::Template::Vars::_set now supports setting array variables.
- Changed XML::Template::Element::Vars::set and element so full variable
names are generated and values set for them (as opposed to generating
actual arrays and hashes on the fly and setting the top level variable).
- When setting a variable, remove any cached XPath object. Due to the
previous change, this is now easy. When creating a new XPath object,
the object is associated with a full variable name in the cache. The
previous change ensures that all variables (including the elements and
children of array and nested variables) are set using the full variable
name. So to remove the cached object, just delete the entry in the
cache for the variable name being set (which is always a full name).
- Fixed a bug in the attribute grammars involving extra /'s when variables
were present in XPath queries.
1.8.03
- Create module XML::Template::Element::DOM and method appendChild.
1.12.03
- Fixed a problem with appendChild. Instead of using XML::XPath::XMLParse
to create the new node to append, I need to create an XPath object for
the new XML and append the node returned by the XPath query
/child::node(). This is because, XMLParse adds an extra level above the
actual child I want to append (the root I suppose). This extra level is
what ultimately gets appended so queries for the node I really want to
append do not work. /child::node() returns the actual node. This may
not technically be a bug in XML::XParse, but it is not the behaviour I
would expect.
- Now the global and user config files are loaded by XPath. The children
of the user config file root node are appended to the global root node.
7.17.03
Been awhile...
- Create a general function get_info to retrieve config information via
an xpath query. Created wrapper functions get_subroutine_info and
get_namespace_info.
- XPath variable 'Config' added to global context in Vars init. So the
variable Config is always available to templates.
7.20.03
- get_info takes an arbitrary XPath query now and doesn't append
[\@name='$name'] to it. This allows functions like get_element_info to
use get_info with more complex XPath queries. Updated
get_subroutine_info and get_namespace_info.
- Changed get_host_info, get_source_mapping_info, get_source_info,
get_element_info, and get_attrib_info to use get_info.
- Removed get_source_mapping from Base.pm.
- Removed get_hostvar from Process.pm.
- Started experimenting with xml-template special attributes. For
instance, in
<html xml-template:cgiheader="0">
...
</html>
no cgi header would be printed. xml-template:cgiheader is the only
special attribute supported at the moment. It need to have some end tag
code to set the cgiheader flag back to what it was before it is set.
- Updated Element/User.pm to use new get_*_info and get_source correctly.
Fixed bugs that caused multiple cgi headers to be displayed when setting
cookies and logging in or out.
- Updated Source/DBI.pm to use new get_source_info correctly.
7.26.03
- Bug fix: Nested in check broke if element config defined but not nested
in defined - just check if nestedin defined.
- Vars: If performing XPath query on an XPath Node::Element object, create
new $xp object with XML string from Node::Element object. This allows
things like
<var:foreach var="el" array="${Config/namespaces/namespace}">
title: ${el/namespace/title}<br/>
</var:foreach>
Perhaps there is a better way than to recreate XPath objects from the
child XML tree, but I don't know it.
- Block/Load: Updated to use new get_source_mapping_info to get block
source.
8.28.03
Template
- select STDOUT and set cgi_header to 1 before printing an error in case
error comes from code where another filehandle has been selected (i.e.,
IO::String).
Base
- Add related namespace info to get_namespace_info.
Process
- In print, don't set cgi_header_printed if current file handle is
IO::String.
- Don't return an error if a loader fails - just go to next one.
- Remove \01 from variable names passed to process (they came from the
attributes of an include tag).
- Fixed bug is generate_where.
Util
- Added format_date variable subroutine.
Vars
- Fixed bug with returning hash elements.
Element/Block
- If current file handle is IO::String, don't die process fails.
Element/DB
- Changed related namespace support to use source mapping info.
Element/Email
- Added support for plain or html mail. String html from plain. Send
with correct content type.
Element/Var
- Added tag 'unset'.
- Return array value properly.
- Fixed length variable subroutine.
Parser/cond.grammar, string.grammar
- Handle \. (escaping the dot) directly after "{...}".
- Bug fix for xpath expressions.
9.12.03
Template
- minor changes
Config
- Load config file(s) using XML::GDOME.
Element
- Change attrib format to so-called James Clark notation.
Parser
- Parse has been rewritten as a SAX parser handler!
Process
- Parse with SAX.
Vars
- Relativize xpath statements for vars derived from other xpath vars,
e.g. inside a xpath loop.
- Check for Element, Text, Attribute GDOME object vars - toString them.
Element/DB
- James Clark attribute notation.
Element/File
- Added a list (files) tag.
Element/Form
- Changed cgi->upload to cgi->param. Not sure why this needed to be
done, but it works.
Parser/String
- Attempt to detect xpath variable, so if a variable function is used
on them, the xpath is not toStrig'ed first. Then the function will
operate on the actual GDOME object. It seems to work, but get_xpath
seems to be called on non-xpath vars. Need to fix.
9.25.03
Process
- Change attrib format to James Clark notation.
Element/Block
- Change attrib format to James Clark notation.
Element/Var
- Updated params for sub 'join'.
Parser/String,Cond
- Call $vars->get_xpath for all variables.
10.1.03
- Changed version to 3.10.
- Updated INSTALL and README.
- Updated Makefile.PL to install files from MANIFEST.
- Updated some POD.
- Updated copyright years.
10.15.03
- Minor fixes.
- DBI::Wrap -> DBIx::Wrap.
11.30.03
- Updated xml-template.conf and added host specific
xml-template_host.conf.
- Updated xml-template.pl.
- Added some features to site admin, added css style.
lib/XML/Template/Element.pm
lib/XML/Template/Element/Core.pm
- Removed xmlinfo code from previous version.
lib/XML/Template/Util.pm
- Added encrypt subroutine.
12.22.03
- Updated INSTALL instructions.
- Updated xml-template.sql.
- Changed XML:Template::Config->admin_dir to admindir.
- Podified every module!
lib/XML/Template/Base.pm
- Fixed so arrays of elements from get_info xpath query are correctly
returned.
lib/XML/Template/Config.pm
- Cleaned up a little.
t/string.t
- Updated string test. Need to add tests!!! Ugh...
12.23.03
- Put <> around email address.
lib/XML/Template/Element/DB.pm
- Changed some instances of \s to \\s.
lib/XML/Template/Element/Test.pm
- Updated.
11.24.03
- Updated TODO.
- POD: Made some changes, set links, fixed typos.
- Changed all occurances of 'yes' or 'no' with 'true' or 'false'.
lib/XML/Template/Process.pm
- Default load list contains XML::Template::Element::File::Load.
- Moved to version 3.20! Updated README, INSTALL, Template.pm.