XML::Compile::C14N - XML Canonicalization


 my $schema = XML::Compile::Cache->new(...);
 my $c14n   = XML::Compile::C14N->new(schema => $schema);


XML canonicalization is used to enforce an explicit formatting style on de XML documents. It is required to have a reproducable output when, for instance, digital signatures gets applied to parts of the document.

C14N currently has seen three versions: 1.0, 1.1, and 2.0. Versions 1.* need [C14N-EXC] version 1.0. There is no support for version 2.0 in XML::LibXML yet, so also not provided by this module.




There can be more than one C14N object active in your program.

 -Option --Default
  for      undef
  schema   undef
  version  '1.1'
for => METHOD

[0.92] When a canonicallization METHOD is provided, that will be used to automatically detect the C14N version to be loaded.

schema => XML::Compile::Cache object

Add the C14N extension information to the provided schema. If not used, you have to call loadSchemas() before compiling readers and writers.

version => STRING

Explicitly state which version C14N needs to be used. C14N2 is not yet supported. If not specified, it is first attempted to derive the version from the 'for' option.



Returns the version number.


$obj->normalize($type, $node, %options)

The $type is one of the C14* constants defined in XML::Compile::C14N::Util. The $node is an XML::LibXML::Element. Returned is a normalized byte-sequence, for instance to be signed.

 -Option     --Default
  context      <created from NODE if needed>
  prefix_list  []
  xpath        undef
context => XML::LibXML::XPathContext object
prefix_list => ARRAY

Then prefixes which are to be included in normalization, only used in excludeNamespaces (EXC) normalizations.


Only normalize a subset of the document.



Load the C14N schema to the global $schema, which must extend XML::Compile::Cache.

This method will be called when you provide a value for new(schema). Otherwise, you need to call this when the global $schema is known in your program.



[C14N-10] Canonical XML Version 1.0, 15 March 2001

[C14N-EXC] Exclusive XML Canonicalization Version 1.0, 18 July 2002

[C14N-11] Canonical XML Version 1.1, 2 May 2008

[C14N-20] Canonical XML Version 2.0, 24 January 2012


This module is part of XML-Compile-C14N distribution version 0.95, built on January 15, 2020. Website:


Copyrights 2011-2020 by [Mark Overmeer <>]. For other contributors see ChangeLog.

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