NAME

YAX::Document - A DOM document object for YAX

SYNOPSIS

use YAX::Document;

$xdoc = YAX::Document->new;

# set/get the doctype
$xdoc->doctype( $type );
$type = $xdoc->doctype;

# get the document element (root node)
$root = $xdoc->root;

$xdoc->set( $node_id => $element );
$xdoc->get( $node_id );

# the following should be used with care because the document can only
# have a single root element, so it doesn't make sense to append multiple
# elements to a document (although YAX doesn't stop you from doing so):
$xdoc->append( $new_child );
$xdoc->remove( $old_child );
$xdoc->replace( $new_child, $ref_child );
$xdoc->insert ( $new_child, $ref_child );

# creator methods:
$elmt = $xdoc->element( $name, %atts );
$text = $xdoc->text( $text );
$frag = $xdoc->fragment( @kids );

# stringify
$xstr = $xdoc->as_string();

DESCRIPTION

This module implements a document object for YAX which is returned by the parser, so you will generally not be constructing these by hand.

It also serves as a registry for nodes keyed on their `id' attribute.

A noteworthy difference between YAX and the W3C DOM is that nodes in a YAX tree do not keep a reference to the document in which they are found. However, the document can be accessed from a node if the node is a descendant of the document, as it is looked up dynamically by traversing up the ancestor chain.

SEE ALSO

YAX:Node, YAX::Text, YAX::Element, YAX::Fragment, YAX::Constants, YAX::Query

AUTHOR

Richard Hundt

LICENSE

This program is free software and may be modified and distributed under the same terms as Perl itself.