NAME¶
DOM-ecmascript - XML::Grove and ECMA Script Language Binding
XML::Grove and DOM Level One¶
XML::Grove is similar in concept to the ECMA Script Language Binding to DOM
Level 1 Core (Appendix E of the DOM Recommendation).
<
http://www.w3.org/TR/REC-DOM-Level-1/ ecma-script-language-binding.html>
The ECMA Script Language Binding presents DOM properties as ECMA Script object
properties. The same is true for XML::Grove, XML::Grove presents DOM
properties as Perl blessed hashes.
The biggest difference between the ECMA Script Language Binding and XML::Grove
is that XML::Grove uses a Perl hash for nodes, Perl arrays for NodeLists, Perl
hashes for NamedNodeLists so those object classes don't exist in XML::Grove.
Because those classes don't exist, you use ordinary Perl syntax for
manipulating the DOM properties (lists and named node lists) instead of
methods like `"nextSibling()"' or `"replaceChild()"'.
Element attributes in XML::Grove are stored in Perl hashes; attribute types
are available through the document object.
Another difference is that XML::Grove attempts to marry the PerlSAX and DOM
naming so that less (no?) name-changing occurs between using PerlSAX
interfaces and filters and DOM modules. Where conflicts occur, the PerlSAX
naming is used.
XML::Grove uses a blessed hash for nodes, so the node type is available using
Perl's `"ref()"' instead of using a `"nodeType()"' method
and all class names are prefixed with `"XML::Grove::"'.
The following object descriptions are the most basic and common provided by many
PerlSAX parsers. PerlSAX parsers often provide additional properties or
objects, refer to your PerlSAX parser documentation for details.
Document Object Model Level 1 Core¶
Object XML::Grove::Document¶
- Contents
- The children of this object. This property is an
array.
- Entities
- The entities declared in this document. This property is a
hash of XML::Grove::Entity objects keyed by entity name.
- Notations
- The notations declared in this document. This property is a
hash of XML::Grove::Notation objects keyed by notation name.
Object XML::Grove::Element¶
- Name
- The tag type name for this element. This property is a
string.
- Attributes
- The attributes for this element. This property is a hash
and it's hash values are strings (or arrays with some grove
builders).
- Contents
- The children of this object. This property is an array of
XML::Grove objects.
Object XML::Grove::Characters¶
- Data
- The text of the character data. This property is a
string.
- Data
- The text of the character data. This property is a
string.
Object XML::Grove::CData¶
The "CData" object is called a "CDATASection" in DOM.
- Data
- The text of the character data. This property is a
string.
Object XML::Grove::Notation¶
- Name
- The name of this notation. This property is a string.
- SystemId
- The system identifier of this notation. This property is a
string.
- PublicId
- The public identifier of this notation. This property is a
string.
Object XML::Grove::Entity¶
- Name
- The name of this entity. This property is a string.
- SystemId
- The system identifier of this notation. This property is a
string.
- PublicId
- The public identifier of this notation. This property is a
string.
- Notation
- The notation declared for this entity. This property is
either the name of the notation as a string or an
"XML::Grove::Notation" object.
Object XML::Grove::PI¶
The "PI" object is called a "ProcessingInstruction" in DOM.
- Target
- The target of the processing instruction. This property is
a string.
- Data
- The text of the processing instruction. This property is a
string.