T.J. Mather


XML::Canonical - Perl Implementation of Canonical XML


  use XML::Canonical;
  $canon = XML::Canonical->new(comments => 1);
  $canon_xml = $canon->canonicalize_string($xml_string);
  $canon_xml = $canon->canonicalize_document($xmlgdome_document);

  my @nodes = $doc->findnodes(qq{(//*[local-name()='included'] | //@*)});
  my $canon_output = $canon->canonicalize_nodes($doc, \@nodes);


This module provides an implementation of Canonical XML Recommendation (Version 1, 15 March 2001). It uses XML::GDOME for its DOM tree and XPath nodes.

It provides a XS wrapper around libxml2's Canonical XML code.


$canon = XML::Canonical->new( comments => $comments );

Returns a new XML::Canonical object. If $comments is 1, then the canonical output will include comments, otherwise comments will be removed from the output.

$output = $canon->canonicalize_string( $xml_string );

Reads in an XML string and outputs its canonical form.

$output = $canon->canonicalize_document( $libxml_doc, $xpath_res );

Reads in a XML::LibXML::Document object and returns its canonical form.

The optional $xpath_res specifics a set of visible nodes in terms of a XPath query result.


Support for XML Signature and upcoming XML Encryption. Probably as an XS wrapper to XMLSec Library, see http://www.aleksey.com/xmlsec/

Support XML::LibXML as well as XML::GDOME.


This module is in early alpha stage. It is suggested that you look over the source code and test cases before using the module. In addition, the API is subject to change.

This module implements the lastest w3 recommendation, located at http://www.w3.org/TR/2001/REC-xml-c14n-20010315

Comments, suggestions, and patches welcome.


T.J. Mather, <tjmather@tjmather.com>


Copyright (c) 2002 T.J. Mather. XML::Canonical is free software; you may redistribute it and/or modify it under the same terms as Perl itself.


XML::GDOME, XML::Handler::CanonXMLWriter.