nu.xom.canonical
Class Canonicalizer

java.lang.Object
  extended by nu.xom.canonical.Canonicalizer

public class Canonicalizer
extends java.lang.Object

Writes XML in the format specified by Canonical XML Version 1.0 or Exclusive XML Canonicalization Version 1.0.

Version:
1.2d1
Author:
Elliotte Rusty Harold

Field Summary
static java.lang.String CANONICAL_XML
           
static java.lang.String CANONICAL_XML_WITH_COMMENTS
           
static java.lang.String EXCLUSIVE_XML_CANONICALIZATION
           
static java.lang.String EXCLUSIVE_XML_CANONICALIZATION_WITH_COMMENTS
           
 
Constructor Summary
Canonicalizer(java.io.OutputStream out)
           Creates a Canonicalizer that outputs a canonical XML document with comments.
Canonicalizer(java.io.OutputStream out, boolean withComments)
           Creates a Canonicalizer that outputs a canonical XML document with or without comments.
Canonicalizer(java.io.OutputStream out, java.lang.String algorithm)
           Creates a Canonicalizer that outputs a canonical XML document using the specified algorithm.
 
Method Summary
 void setInclusiveNamespacePrefixList(java.lang.String inclusiveNamespacePrefixes)
           Specifies the prefixes that will be output as specified in regular canonical XML, even when doing exclusive XML canonicalization.
 void write(Node node)
           Serializes a node onto the output stream using the specified canonicalization algorithm.
 void write(Nodes documentSubset)
           Serializes a document subset onto the output stream using the canonical XML algorithm.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CANONICAL_XML

public static final java.lang.String CANONICAL_XML
See Also:
Constant Field Values

CANONICAL_XML_WITH_COMMENTS

public static final java.lang.String CANONICAL_XML_WITH_COMMENTS
See Also:
Constant Field Values

EXCLUSIVE_XML_CANONICALIZATION

public static final java.lang.String EXCLUSIVE_XML_CANONICALIZATION
See Also:
Constant Field Values

EXCLUSIVE_XML_CANONICALIZATION_WITH_COMMENTS

public static final java.lang.String EXCLUSIVE_XML_CANONICALIZATION_WITH_COMMENTS
See Also:
Constant Field Values
Constructor Detail

Canonicalizer

public Canonicalizer(java.io.OutputStream out)

Creates a Canonicalizer that outputs a canonical XML document with comments.

Parameters:
out - the output stream the document is written onto

Canonicalizer

public Canonicalizer(java.io.OutputStream out,
                     boolean withComments)

Creates a Canonicalizer that outputs a canonical XML document with or without comments.

Parameters:
out - the output stream the document is written onto
withComments - true if comments should be included in the output, false otherwise

Canonicalizer

public Canonicalizer(java.io.OutputStream out,
                     java.lang.String algorithm)

Creates a Canonicalizer that outputs a canonical XML document using the specified algorithm. Currently, four algorithms are defined and supported:

Parameters:
out - the output stream the document is written onto
algorithm - the URI for the canonicalization algorithm
Throws:
CanonicalizationException - if the algorithm is not recognized
java.lang.NullPointerException - if the algorithm is null
Method Detail

write

public final void write(Node node)
                 throws java.io.IOException

Serializes a node onto the output stream using the specified canonicalization algorithm. If the node is a document or an element, then the node's entire subtree is written out.

Parameters:
node - the node to canonicalize
Throws:
java.io.IOException - if the underlying OutputStream encounters an I/O error

write

public final void write(Nodes documentSubset)
                 throws java.io.IOException

Serializes a document subset onto the output stream using the canonical XML algorithm. All nodes in the list must come from same document. Furthermore, they must come from a document. They cannot be detached. The nodes need not be sorted. This method will sort them into the appropriate order for canonicalization.

In most common use cases, these nodes will be the result of evaluating an XPath expression. For example,

 Canonicalizer canonicalizer 
   = new Canonicalizer(System.out, Canonicalizer.CANONICAL_XML);
 Nodes result = doc.query("//. | //@* | //namespace::*");
 canonicalizer.write(result);  
 

Children are not output unless the subset also includes them. Including an element in the subset does not automatically select all the element's children, attributes, and namespaces. Furthermore, not selecting an element does not imply that its children, namespaces, attributes will not be output.

Parameters:
documentSubset - the nodes to serialize
Throws:
java.io.IOException - if the underlying OutputStream encounters an I/O error
CanonicalizationException - if the nodes come from more than one document; or if a detached node is in the list

setInclusiveNamespacePrefixList

public final void setInclusiveNamespacePrefixList(java.lang.String inclusiveNamespacePrefixes)
                                           throws java.io.IOException

Specifies the prefixes that will be output as specified in regular canonical XML, even when doing exclusive XML canonicalization.

Parameters:
inclusiveNamespacePrefixes - a whitespace separated list of namespace prefixes that will always be included in the output, even in exclusive canonicalization
Throws:
java.io.IOException


Copyright 2002-2007 Elliotte Rusty Harold
elharo@metalab.unc.edu