Larry Wall suggests, ``In the absence of other considerations, I'd encourage you to provide the cleanest interface from the user's standpoint, and let the implementer worry about the details.''
Still Undecided:
All method names use lower-case, `_' seperated names.
_
or
All method names match their Java counterparts.
All options, parameters, and property names use mixed case names, with an initial upper case character. This eliminates a certain amount of potential confusion with reserved words, which, for the most part, are lower case.
The following words are abbreviated in method names and parameters:
Declaration decl Decl Reference ref Ref Identifier id Id
For creating new parser or handler objects, the `new' methods accept a list of key-value pairs (=>) or a hash containing the options. The key names are derived from the SAX positional parameter names (`Source' and `SystemId' in Parser's `parse()') or the name of option setting methods (`DocumentHandler', `DTDHandler', `EntityResolver', `ErrorHandler', and `Locale' in Parser).
=>
Source
SystemId
parse()
DocumentHandler
DTDHandler
EntityResolver
ErrorHandler
Locale
Callers may get and set options directly in the object, for example:
$parser = SAX::Parser->new( Source => { ByteStream => $fh }, DocumentHandler => $doc_handler ); $parser->{Locale} = 'el_GR.ISO-8859-7';
There are no set/get methods in the Perl SAX API.
Handler calls all take hashes instead of positional parameters. Key names are derived from SAX positional parameter names. This allows parsers and filters to provide additional parameters if they can or the user requests it.
Developers of event-generators can extend the handler interface as they need to. Event-generators that use an extended interface should accept generator options or use `can' to test whether a handler can support their extended interface.
can
For example, a DocumentHandler that wants to receive internal entity events instead of having them resolved and passed in to the `characters' method would define a `internal_entity' method and/or set a parser option to pass or not pass internal entity events.
characters
internal_entity
Perl SAX avoids helper classes (like SAXException and InputSource) where those classes only hold information and have no behavior. In those cases, simple hashes are used instead.
It is still undecided if these should be implemented anyway for easier portability.
Eduard (Enno) Derksen Ken MacLeod Eric Prud'hommeaux Larry Wall
To install Data::Grove, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Grove
CPAN shell
perl -MCPAN -e shell install Data::Grove
For more information on module installation, please visit the detailed CPAN module installation guide.