XML::LibXML::DOM (3)
Leading comments
Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35) Standard preamble: ========================================================================
NAME
XML::LibXML::DOM - XML::LibXML DOM ImplementationDESCRIPTION
XML::LibXML provides an light-wight interface to modify a node of the document tree generated by the XML::LibXML parser. This interface follows as far as possible theOne also has to remember, that XML::LibXML is an interface to libxml2 nodes which actually reside on the C-Level of XML::LibXML. This means each node is a reference to a structure different than a perl hash or array. The only way to access these structure's values is through the
The
Another target of the XML::LibXML interface is to make the interfaces of libxml2 available to the perl community. This includes also some workarounds to some features where libxml2 assumes more control over the C-Level that most perl users don't have.
One of the most important parts of the XML::LibXML
Also there are some function interfaces left over from early stages of XML::LibXML for compatibility reasons. These interfaces are for compatibility reasons only. They might disappear in one of the future versions of XML::LibXML, so a user is requested to switch over to the official functions.
Encodings and XML::LibXML's DOM implementation
See the section on Encodings in the XML::LibXML manual page.
Namespaces and XML::LibXML's DOM implementation
XML::LibXML's According to the
This is both inconvenient, causes problems in serialization of
In libxml2, namespace
Therefore current
In XML::LibXML, special attributes declaring
Namespace declarations are also created when XML::LibXML::Document's createElementNS() or createAttributeNS() function are used. If the a namespace is not declared on the documentElement, the namespace will be locally declared for the newly created node. In case of Attributes this may look a bit confusing, since these nodes cannot have namespace declarations itself. In this case the namespace is internally applied to the attribute and later declared on the node the attribute is appended to (if required).
The following example may explain this a bit:
my $doc = XML::LibXML->createDocument; my $root = $doc->createElementNS( "", "foo" ); $doc->setDocumentElement( $root ); my $attr = $doc->createAttributeNS( "bar", "bar:foo", "test" ); $root->setAttributeNodeNS( $attr );
This piece of code will result in the following document:
<?xml version="1.0"?> <foo xmlns:bar="bar" bar:foo="test"/>
The namespace is declared on the document element during the setAttributeNodeNS() call.
Namespaces can be also declared explicitly by the use of XML::LibXML::Element's setNamespace() function. Since 1.61, they can also be manipulated with functions setNamespaceDeclPrefix() and setNamespaceDeclURI() (not available in
It is also important to repeat the specification: While working with namespaces you should use the namespace aware functions instead of the simplified versions. For example you should never use setAttribute() but setAttributeNS().
AUTHORS
Matt Sergeant, Christian Glahn, Petr PajasVERSION
2.0122COPYRIGHT
2001-2007, AxKit.com Ltd.2002-2006, Christian Glahn.
2006-2009, Petr Pajas.