Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / XML::LibXML.3pm
CommitLineData
3fea05b9 1.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sp \" Vertical space (when we can't use .PP)
6.if t .sp .5v
7.if n .sp
8..
9.de Vb \" Begin verbatim text
10.ft CW
11.nf
12.ne \\$1
13..
14.de Ve \" End verbatim text
15.ft R
16.fi
17..
18.\" Set up some character translations and predefined strings. \*(-- will
19.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20.\" double quote, and \*(R" will give a right double quote. \*(C+ will
21.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23.\" nothing in troff, for use with C<>.
24.tr \(*W-
25.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26.ie n \{\
27. ds -- \(*W-
28. ds PI pi
29. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31. ds L" ""
32. ds R" ""
33. ds C` ""
34. ds C' ""
35'br\}
36.el\{\
37. ds -- \|\(em\|
38. ds PI \(*p
39. ds L" ``
40. ds R" ''
41'br\}
42.\"
43.\" Escape single quotes in literal strings from groff's Unicode transform.
44.ie \n(.g .ds Aq \(aq
45.el .ds Aq '
46.\"
47.\" If the F register is turned on, we'll generate index entries on stderr for
48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49.\" entries marked with X<> in POD. Of course, you'll have to process the
50.\" output yourself in some meaningful fashion.
51.ie \nF \{\
52. de IX
53. tm Index:\\$1\t\\n%\t"\\$2"
54..
55. nr % 0
56. rr F
57.\}
58.el \{\
59. de IX
60..
61.\}
62.\"
63.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64.\" Fear. Run. Save yourself. No user-serviceable parts.
65. \" fudge factors for nroff and troff
66.if n \{\
67. ds #H 0
68. ds #V .8m
69. ds #F .3m
70. ds #[ \f1
71. ds #] \fP
72.\}
73.if t \{\
74. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75. ds #V .6m
76. ds #F 0
77. ds #[ \&
78. ds #] \&
79.\}
80. \" simple accents for nroff and troff
81.if n \{\
82. ds ' \&
83. ds ` \&
84. ds ^ \&
85. ds , \&
86. ds ~ ~
87. ds /
88.\}
89.if t \{\
90. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96.\}
97. \" troff and (daisy-wheel) nroff accents
98.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105.ds ae a\h'-(\w'a'u*4/10)'e
106.ds Ae A\h'-(\w'A'u*4/10)'E
107. \" corrections for vroff
108.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110. \" for low resolution devices (crt and lpr)
111.if \n(.H>23 .if \n(.V>19 \
112\{\
113. ds : e
114. ds 8 ss
115. ds o a
116. ds d- d\h'-1'\(ga
117. ds D- D\h'-1'\(hy
118. ds th \o'bp'
119. ds Th \o'LP'
120. ds ae ae
121. ds Ae AE
122.\}
123.rm #[ #] #H #V #F C
124.\" ========================================================================
125.\"
126.IX Title "LibXML 3"
127.TH LibXML 3 "2009-10-07" "perl v5.8.7" "User Contributed Perl Documentation"
128.\" For nroff, turn off justification. Always turn off hyphenation; it makes
129.\" way too many mistakes in technical documents.
130.if n .ad l
131.nh
132.SH "NAME"
133XML::LibXML \- Perl Binding for libxml2
134.SH "SYNOPSIS"
135.IX Header "SYNOPSIS"
136.Vb 4
137\& use XML::LibXML;
138\& my $dom = XML::LibXML\->load_xml(string => <<\*(AqEOT\*(Aq);
139\& <some\-xml/>
140\& EOT
141\&
142\& $Version_String = XML::LibXML::LIBXML_DOTTED_VERSION;
143\& $Version_ID = XML::LibXML::LIBXML_VERSION;
144\& $DLL_Version = XML::LibXML::LIBXML_RUNTIME_VERSION;
145\& $libxmlnode = XML::LibXML\->import_GDOME( $node, $deep );
146\& $gdomenode = XML::LibXML\->export_GDOME( $node, $deep );
147.Ve
148.SH "DESCRIPTION"
149.IX Header "DESCRIPTION"
150This module is an interface to libxml2, providing \s-1XML\s0 and \s-1HTML\s0 parsers with
151\&\s-1DOM\s0, \s-1SAX\s0 and XMLReader interfaces, a large subset of \s-1DOM\s0 Layer 3 interface and
152a XML::XPath\-like interface to XPath \s-1API\s0 of libxml2. The module is split into
153several packages which are not described in this section; unless stated
154otherwise, you only need to \f(CW\*(C`use XML::LibXML;\*(C'\fR in your programs.
155.PP
156For further information, please check the following documentation:
157.IP "XML::LibXML::Parser" 4
158.IX Item "XML::LibXML::Parser"
159Parsing \s-1XML\s0 files with XML::LibXML
160.IP "XML::LibXML::DOM" 4
161.IX Item "XML::LibXML::DOM"
162XML::LibXML Document Object Model (\s-1DOM\s0) Implementation
163.IP "XML::LibXML::SAX" 4
164.IX Item "XML::LibXML::SAX"
165XML::LibXML direct \s-1SAX\s0 parser
166.IP "XML::LibXML::Reader" 4
167.IX Item "XML::LibXML::Reader"
168Reading \s-1XML\s0 with a pull-parser
169.IP "XML::LibXML::Dtd" 4
170.IX Item "XML::LibXML::Dtd"
171XML::LibXML frontend for \s-1DTD\s0 validation
172.IP "XML::LibXML::RelaxNG" 4
173.IX Item "XML::LibXML::RelaxNG"
174XML::LibXML frontend for RelaxNG schema validation
175.IP "XML::LibXML::Schema" 4
176.IX Item "XML::LibXML::Schema"
177XML::LibXML frontend for W3C Schema schema validation
178.IP "XML::LibXML::XPathContext" 4
179.IX Item "XML::LibXML::XPathContext"
180\&\s-1API\s0 for evaluating XPath expressions with enhanced support for the evaluation
181context
182.IP "XML::LibXML::InputCallback" 4
183.IX Item "XML::LibXML::InputCallback"
184Implementing custom \s-1URI\s0 Resolver and input callbacks
185.IP "XML::LibXML::Common" 4
186.IX Item "XML::LibXML::Common"
187Common functions for XML::LibXML related Classes
188.PP
189The nodes in the Document Object Model (\s-1DOM\s0) are represented by the following
190classes (most of which \*(L"inherit\*(R" from XML::LibXML::Node):
191.IP "XML::LibXML::Document" 4
192.IX Item "XML::LibXML::Document"
193XML::LibXML class for \s-1DOM\s0 document nodes
194.IP "XML::LibXML::Node" 4
195.IX Item "XML::LibXML::Node"
196Abstract base class for XML::LibXML \s-1DOM\s0 nodes
197.IP "XML::LibXML::Element" 4
198.IX Item "XML::LibXML::Element"
199XML::LibXML class for \s-1DOM\s0 element nodes
200.IP "XML::LibXML::Text" 4
201.IX Item "XML::LibXML::Text"
202XML::LibXML class for \s-1DOM\s0 text nodes
203.IP "XML::LibXML::Comment" 4
204.IX Item "XML::LibXML::Comment"
205XML::LibXML class for comment \s-1DOM\s0 nodes
206.IP "XML::LibXML::CDATASection" 4
207.IX Item "XML::LibXML::CDATASection"
208XML::LibXML class for \s-1DOM\s0 \s-1CDATA\s0 sections
209.IP "XML::LibXML::Attr" 4
210.IX Item "XML::LibXML::Attr"
211XML::LibXML \s-1DOM\s0 attribute class
212.IP "XML::LibXML::DocumentFragment" 4
213.IX Item "XML::LibXML::DocumentFragment"
214XML::LibXML's \s-1DOM\s0 L2 Document Fragment implementation
215.IP "XML::LibXML::Namespace" 4
216.IX Item "XML::LibXML::Namespace"
217XML::LibXML \s-1DOM\s0 namespace nodes
218.IP "XML::LibXML::PI" 4
219.IX Item "XML::LibXML::PI"
220XML::LibXML \s-1DOM\s0 processing instruction nodes
221.SH "ENCODINGS SUPPORT IN XML::LIBXML"
222.IX Header "ENCODINGS SUPPORT IN XML::LIBXML"
223Recall that since version 5.6.1, Perl distinguishes between character strings
224(internally encoded in \s-1UTF\-8\s0) and so called binary data and, accordingly,
225applies either character or byte semantics to them. A scalar representing a
226character string is distinguished from a byte string by special flag (\s-1UTF8\s0).
227Please refer to \fIperlunicode\fR for details.
228.PP
229XML::LibXML's \s-1API\s0 is designed to deal with many encodings of \s-1XML\s0 documents
230completely transparently, so that the application using XML::LibXML can be
231completely ignorant about the encoding of the \s-1XML\s0 documents it works with. On
232the other hand, functions like \f(CW\*(C`XML::LibXML::Document\->setEncoding\*(C'\fR give the user control over the document encoding.
233.PP
234To ensure the aforementioned transparency and uniformity, most functions of
235XML::LibXML that work with in-memory trees accept and return data as character
236strings (i.e. \s-1UTF\-8\s0 encoded with the \s-1UTF8\s0 flag on) regardless of the original
237document encoding; however, the functions related to I/O operations (i.e.
238parsing and saving) operate with binary data (in the original document
239encoding) obeying the encoding declaration of the \s-1XML\s0 documents.
240.PP
241Below we summarize basic rules and principles regarding encoding:
242.IP "1." 4
243Do \s-1NOT\s0 apply any encoding-related PerlIO layers (\f(CW\*(C`:utf8\*(C'\fR or \f(CW\*(C`:encoding(...)\*(C'\fR) to file handles that are an input for the parses or an output for a
244serializer of (full) \s-1XML\s0 documents. This is because the conversion of the data
245to/from the internal character representation is provided by libxml2 itself
246which must be able to enforce the encoding specified by the \f(CW\*(C`<?xml version="1.0" encoding="..."?>\*(C'\fR declaration. Here is an example to follow:
247.Sp
248.Vb 9
249\& use XML::LibXML;
250\& open my $fh, "file.xml";
251\& binmode $fh; # drop all PerlIO layers possibly created by a use open pragma
252\& $doc = XML::LibXML\->load_xml(IO => $fh);
253\& open my $out, "out.xml";
254\& binmode $fh; # as above
255\& $doc\->toFh($fh);
256\& # or
257\& print $fh $doc\->toString();
258.Ve
259.IP "2." 4
260All functions working with \s-1DOM\s0 accept and return character strings (\s-1UTF\-8\s0
261encoded with \s-1UTF8\s0 flag on). E.g.
262.Sp
263.Vb 5
264\& my $doc = XML::LibXML:Document\->new(\*(Aq1.0\*(Aq,$some_encoding);
265\& my $element = $doc\->createElement($name);
266\& $element\->appendText($text);
267\& $xml_fragment = $element\->toString(); # returns a character string
268\& $xml_document = $doc\->toString(); # returns a byte string
269.Ve
270.Sp
271where \f(CW$some_encoding\fR is the document encoding that will be used when saving the document, and \f(CW$name\fR and \f(CW$text\fR contain character strings (\s-1UTF\-8\s0 encoded with \s-1UTF8\s0 flag on). Note that the
272method \f(CW\*(C`toString\*(C'\fR returns \s-1XML\s0 as a character string if applied to other node than the Document
273node and a byte string containing the apropriate
274.Sp
275.Vb 1
276\& <?xml version="1.0" encoding="..."?>
277.Ve
278.Sp
279declaration if applied to a XML::LibXML::Document.
280.IP "3." 4
281\&\s-1DOM\s0 methods also accept binary strings in the original encoding of the document
282to which the node belongs (\s-1UTF\-8\s0 is assumed if the node is not attached to any
283document). Exploiting this feature is \s-1NOT\s0 \s-1RECOMMENDED\s0 since it is considered a
284bad practice.
285.Sp
286.Vb 3
287\& my $doc = XML::LibXML:Document\->new(\*(Aq1.0\*(Aq,\*(Aqiso\-8859\-2\*(Aq);
288\& my $text = $doc\->createTextNode($some_latin2_encoded_byte_string);
289\& # WORKS, BUT NOT RECOMMENDED!
290.Ve
291.PP
292\&\fI\s-1NOTE:\s0\fR libxml2 support for many encodings is based on the iconv library. The actual
293list of supported encodings may vary from platform to platform. To test if your
294platform works correctly with your language encoding, build a simple document
295in the particular encoding and try to parse it with XML::LibXML to see if the
296parser produces any errors. Occasional crashes were reported on rare platforms
297that ship with a broken version of iconv.
298.SH "THREAD SUPPORT"
299.IX Header "THREAD SUPPORT"
300XML::LibXML since 1.67 partially supports Perl threads in Perl >= 5.8.8.
301XML::LibXML can be used with threads in two ways:
302.PP
303By default, all XML::LibXML classes use \s-1CLONE_SKIP\s0 class method to prevent Perl
304from copying XML::LibXML::* objects when a new thread is spawn. In this mode,
305all XML::LibXML::* objects are thread specific. This is the safest way to work
306with XML::LibXML in threads.
307.PP
308Alternatively, one may use
309.PP
310.Vb 2
311\& use threads;
312\& use XML::LibXML qw(:threads_shared);
313.Ve
314.PP
315to indicate, that all XML::LibXML node and parser objects should be shared
316between the main thread and any thread spawn from there. For example, in
317.PP
318.Vb 6
319\& my $doc = XML::LibXML\->load_xml(location => $filename);
320\& my $thr = threads\->new(sub{
321\& # code working with $doc
322\& 1;
323\& });
324\& $thr\->join;
325.Ve
326.PP
327the variable \f(CW$doc\fR refers to the exact same XML::LibXML::Document in the spawned thread as in the
328main thread.
329.PP
330Without using mutex locks, oaralel threads may read the same document (i.e. any
331node that belongs to the document), parse files, and modify different
332documents.
333.PP
334However, if there is a chance that some of the threads will attempt to modify a
335document ( or even create new nodes based on that document, e.g. with \f(CW\*(C`$doc\->createElement\*(C'\fR) that other threads may be reading at the same time, the user is responsible
336for creating a mutex lock and using it in \fIboth\fR in the thread that modifies and the thread that reads:
337.PP
338.Vb 10
339\& my $doc = XML::LibXML\->load_xml(location => $filename);
340\& my $mutex : shared;
341\& my $thr = threads\->new(sub{
342\& lock $mutex;
343\& my $el = $doc\->createElement(\*(Aqfoo\*(Aq);
344\& # ...
345\& 1;
346\& });
347\& {
348\& lock $mutex;
349\& my $root = $doc\->documentElement;
350\& say $root\->name;
351\& }
352\& $thr\->join;
353.Ve
354.PP
355Note that libxml2 uses dictionaries to store short strings and these
356dicionaries are kept on a document node. Without mutex locks, it could happen
357in the previous example that the thread modifies the dictionary while other
358threads attempt to read from it, which could easily lead to a crash.
359.SH "VERSION INFORMATION"
360.IX Header "VERSION INFORMATION"
361Sometimes it is useful to figure out, for which version XML::LibXML was
362compiled for. In most cases this is for debugging or to check if a given
363installation meets all functionality for the package. The functions
364XML::LibXML::LIBXML_DOTTED_VERSION and XML::LibXML::LIBXML_VERSION provide this
365version information. Both functions simply pass through the values of the
366similar named macros of libxml2. Similarly, XML::LibXML::LIBXML_RUNTIME_VERSION
367returns the version of the (usually dynamically) linked libxml2.
368.IP "XML::LibXML::LIBXML_DOTTED_VERSION" 4
369.IX Item "XML::LibXML::LIBXML_DOTTED_VERSION"
370.Vb 1
371\& $Version_String = XML::LibXML::LIBXML_DOTTED_VERSION;
372.Ve
373.Sp
374Returns the version string of the libxml2 version XML::LibXML was compiled for.
375This will be \*(L"2.6.2\*(R" for \*(L"libxml2 2.6.2\*(R".
376.IP "XML::LibXML::LIBXML_VERSION" 4
377.IX Item "XML::LibXML::LIBXML_VERSION"
378.Vb 1
379\& $Version_ID = XML::LibXML::LIBXML_VERSION;
380.Ve
381.Sp
382Returns the version id of the libxml2 version XML::LibXML was compiled for.
383This will be \*(L"20602\*(R" for \*(L"libxml2 2.6.2\*(R". Don't mix this version id with
384\&\f(CW$XML::LibXML::VERSION\fR. The latter contains the version of XML::LibXML itself
385while the first contains the version of libxml2 XML::LibXML was compiled for.
386.IP "XML::LibXML::LIBXML_RUNTIME_VERSION" 4
387.IX Item "XML::LibXML::LIBXML_RUNTIME_VERSION"
388.Vb 1
389\& $DLL_Version = XML::LibXML::LIBXML_RUNTIME_VERSION;
390.Ve
391.Sp
392Returns a version string of the libxml2 which is (usually dynamically) linked
393by XML::LibXML. This will be \*(L"20602\*(R" for libxml2 released as \*(L"2.6.2\*(R" and
394something like \*(L"20602\-CVS2032\*(R" for a \s-1CVS\s0 build of libxml2.
395.Sp
396XML::LibXML issues a warning if the version of libxml2 dynamically linked to it
397is less than the version of libxml2 which it was compiled against.
398.SH "EXPORTS"
399.IX Header "EXPORTS"
400By default the module exports all constants and functions listed in the :all
401tag, described below.
402.SH "EXPORT TAGS"
403.IX Header "EXPORT TAGS"
404.ie n .IP """:all""" 4
405.el .IP "\f(CW:all\fR" 4
406.IX Item ":all"
407Includes the tags \f(CW\*(C`:libxml\*(C'\fR, \f(CW\*(C`:encoding\*(C'\fR, and \f(CW\*(C`:ns\*(C'\fR described below.
408.ie n .IP """:libxml""" 4
409.el .IP "\f(CW:libxml\fR" 4
410.IX Item ":libxml"
411Exports integer constants for \s-1DOM\s0 node types.
412.Sp
413.Vb 10
414\& XML_ELEMENT_NODE => 1
415\& XML_ATTRIBUTE_NODE => 2
416\& XML_TEXT_NODE => 3
417\& XML_CDATA_SECTION_NODE => 4
418\& XML_ENTITY_REF_NODE => 5
419\& XML_ENTITY_NODE => 6
420\& XML_PI_NODE => 7
421\& XML_COMMENT_NODE => 8
422\& XML_DOCUMENT_NODE => 9
423\& XML_DOCUMENT_TYPE_NODE => 10
424\& XML_DOCUMENT_FRAG_NODE => 11
425\& XML_NOTATION_NODE => 12
426\& XML_HTML_DOCUMENT_NODE => 13
427\& XML_DTD_NODE => 14
428\& XML_ELEMENT_DECL => 15
429\& XML_ATTRIBUTE_DECL => 16
430\& XML_ENTITY_DECL => 17
431\& XML_NAMESPACE_DECL => 18
432\& XML_XINCLUDE_START => 19
433\& XML_XINCLUDE_END => 20
434.Ve
435.ie n .IP """:encoding""" 4
436.el .IP "\f(CW:encoding\fR" 4
437.IX Item ":encoding"
438Exports two encoding conversion functions from XML::LibXML::Common.
439.Sp
440.Vb 2
441\& encodeToUTF8()
442\& decodeFromUTF8()
443.Ve
444.ie n .IP """:ns""" 4
445.el .IP "\f(CW:ns\fR" 4
446.IX Item ":ns"
447Exports two convenience constants: the implicit namespace of the reserved \f(CW\*(C`xml:\*(C'\fR prefix, and the implicit namespace for the reserved \f(CW\*(C`xmlns:\*(C'\fR prefix.
448.Sp
449.Vb 2
450\& XML_XML_NS => \*(Aqhttp://www.w3.org/XML/1998/namespace\*(Aq
451\& XML_XMLNS_NS => \*(Aqhttp://www.w3.org/2000/xmlns/\*(Aq
452.Ve
453.SH "RELATED MODULES"
454.IX Header "RELATED MODULES"
455The modules described in this section are not part of the XML::LibXML package
456itself. As they support some additional features, they are mentioned here.
457.IP "XML::LibXSLT" 4
458.IX Item "XML::LibXSLT"
459\&\s-1XSLT\s0 1.0 Processor using libxslt and XML::LibXML
460.IP "XML::LibXML::Iterator" 4
461.IX Item "XML::LibXML::Iterator"
462XML::LibXML Implementation of the \s-1DOM\s0 Traversal Specification
463.IP "XML::CompactTree::XS" 4
464.IX Item "XML::CompactTree::XS"
465Uses XML::LibXML::Reader to very efficiently to parse \s-1XML\s0 document or element
466into native Perl data structures, which are less flexible but significantly
467faster to process then \s-1DOM\s0.
468.SH "XML::LIBXML AND XML::GDOME"
469.IX Header "XML::LIBXML AND XML::GDOME"
470Note: \fI\s-1THE\s0 \s-1FUNCTIONS\s0 \s-1DESCRIBED\s0 \s-1HERE\s0 \s-1ARE\s0 \s-1STILL\s0 \s-1EXPERIMENTAL\s0\fR
471.PP
472Although both modules make use of libxml2's \s-1XML\s0 capabilities, the \s-1DOM\s0
473implementation of both modules are not compatible. But still it is possible to
474exchange nodes from one \s-1DOM\s0 to the other. The concept of this exchange is
475pretty similar to the function \fIcloneNode()\fR: The particular node is copied on
476the low-level to the opposite \s-1DOM\s0 implementation.
477.PP
478Since the \s-1DOM\s0 implementations cannot coexist within one document, one is forced
479to copy each node that should be used. Because you are always keeping two nodes
480this may cause quite an impact on a machines memory usage.
481.PP
482XML::LibXML provides two functions to export or import \s-1GDOME\s0 nodes:
483\&\fIimport_GDOME()\fR and \fIexport_GDOME()\fR. Both function have two parameters: the node
484and a flag for recursive import. The flag works as in \fIcloneNode()\fR.
485.PP
486The two functions allow to export and import \s-1XML::GDOME\s0 nodes explicitly,
487however, XML::LibXML allows also the transparent import of \s-1XML::GDOME\s0 nodes in
488functions such as \fIappendChild()\fR, \fIinsertAfter()\fR and so on. While native nodes
489are automatically adopted in most functions \s-1XML::GDOME\s0 nodes are always cloned
490in advance. Thus if the original node is modified after the operation, the node
491in the XML::LibXML document will not have this information.
492.IP "import_GDOME" 4
493.IX Item "import_GDOME"
494.Vb 1
495\& $libxmlnode = XML::LibXML\->import_GDOME( $node, $deep );
496.Ve
497.Sp
498This clones an \s-1XML::GDOME\s0 node to a XML::LibXML node explicitly.
499.IP "export_GDOME" 4
500.IX Item "export_GDOME"
501.Vb 1
502\& $gdomenode = XML::LibXML\->export_GDOME( $node, $deep );
503.Ve
504.Sp
505Allows to clone an XML::LibXML node into a \s-1XML::GDOME\s0 node.
506.SH "CONTACTS"
507.IX Header "CONTACTS"
508For bug reports, please use the \s-1CPAN\s0 request tracker on
509http://rt.cpan.org/NoAuth/Bugs.html?Dist=XML\-LibXML
510.PP
511For suggestions etc., and other issues related to XML::LibXML you may use the
512perl \s-1XML\s0 mailing list (\f(CW\*(C`perl\-xml@listserv.ActiveState.com\*(C'\fR), where most XML-related Perl modules are discussed. In case of problems you
513should check the archives of that list first. Many problems are already
514discussed there. You can find the list's archives and subscription options at <http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/perl\-xml>.
515.SH "AUTHORS"
516.IX Header "AUTHORS"
517Matt Sergeant,
518Christian Glahn,
519Petr Pajas
520.SH "VERSION"
521.IX Header "VERSION"
5221.70
523.SH "COPYRIGHT"
524.IX Header "COPYRIGHT"
5252001\-2007, AxKit.com Ltd.
526.PP
5272002\-2006, Christian Glahn.
528.PP
5292006\-2009, Petr Pajas.