NAME
PRANG::Graph::Node - role for nodes in XML Graph machinery
SYNOPSIS
package PRANG::Graph::Foo;
with 'PRANG::Graph::Node';
DESCRIPTION
This role is essentially an interface which different types of acceptors/emitted in the marshalling machinery must implement.
You should hopefully not have to implement or poke into this class, but if you do end up there while debugging then this documentation is for you.
REQUIRED METHODS
Currently there are four methods required;
accept( XML::LibXML::Node $node, PRANG::Graph::Context $ctx ) returns ($key, $value, $nodeNameIfAmbiguous)
Given an XML node, completely and recursively parse that node, construct an object and return that object along with the name of the node if the schema requires it.
Updates $ctx
with any parse state affected by the operation.
complete( PRANG::Graph::Context $ctx ) returns Bool
Returns true if the acceptor could be happy with the amount of parsing that has been recorded in $ctx
or not.
expected( PRANG::Graph::Context $ctx ) returns (@Str)
If there has not been enough accepted, then this function returns something useful for building a helpful exception message.
output( Object $item, XML::LibXML::Element $node, HashRef $xsi)
Given the item $item
, marshall to XML by constructing new LibXML nodes and attaching to $node
; $xsi
is the current XML namespaces mapping.
SEE ALSO
PRANG::Graph::Meta::Class, PRANG::Graph::Meta::Attr, PRANG::Graph::Meta::Element, PRANG::Marshaller, PRANG::Graph::Context
Implementations:
PRANG::Graph::Seq, PRANG::Graph::Quant, PRANG::Graph::Choice, PRANG::Graph::Element, PRANG::Graph::Text
AUTHOR AND LICENCE
Development commissioned by NZ Registry Services, and carried out by Catalyst IT - http://www.catalyst.net.nz/
Copyright 2009, 2010, NZ Registry Services. This module is licensed under the Artistic License v2.0, which permits relicensing under other Free Software licenses.