Ok, I don't implement namespace handling yet.
But I introduced the node types in XML::LibXML and by default I
export them. I am aware this is not very beautyfull -- well, the
way it's done ...
Since most functions need more than just a simple call to libxml2
I wrapped them in dom.c. I believe this is a better way than just put
the whole code in the XS file.
Then I patched LibXML.xs and added the parts
As well some extra functions in XML::LibXML::Document.
Common node related functions are implemented in XML::LibXML::Node,
so only specialized functions had to be reimplemented for sublevel
I treat XML::LibXML::Text as the CharacterData Class from the
DOM spec. Since libxml2 implements all character classes slightly
different, each constructor had to be implemented seperatly.
This implementation is aware about all subclasses that are supported:
The CLASS Constant is set depending on the type of the node currently
handled. Differently to the previous implementation it does not
coredump that much any more. ;-)
As well I added a chunk of documentation and a new example.
code cleanup and better documentation
"dom.h" , "dom.c" are both much smaller after I removed redundant code
"dom.c" is sorted analogue to "dom.h"
all documentation about my extensions can be found in "examples/libxml.xml"
the script "examples/xml2pod.pl" will transform this XML document into
various .pod documents.
better testing the encoding
added nodelist functions
the current version includes some securety fixes in dom.c and LibXML.xs
also a better testsuite
completed function setAttributeNode
added function getAttributes
added function getAttributesNS
more node security fixes
these functions will return an array of attribute nodes.
both will probably renamed before i make them public
idea: global encoding constant, so all user input will be encoded from
that encoding to utf8 INTERNALLY
todo: add xmlEncodeEntitiesReentrant for all text content
cleaned the test suite
+ getOwner returns the Owner Node (root of the subtree)
of the current element
+ getOwnerDocument returns the Owner document of the node if any
+ proxy fixes
+ introduced documentfragment
i will allways create a document fragment for EACH unbound node.
made the documentFragment a node
+ more securety checks and less memory leaks...
+ better array handling
+ DOM L2 conform naming (optional)
+ entity encoding fixed
+ domsetnodevalue is aware of attributes as well
+ domreplacenode introduced
+ added internal function insert_node_to_nodelist
+ document_fragment tests
make shure appendChild or similar functions do not allow
wrong node type to be appended
make the node iterator function XS to avoid GC overhead
for temporary iterator nodes.