blob: 4c571ad861f118819501d8ca4c960dcbb378b430 [file] [log] [blame]
#-------------------------------------------------------------------------#
# $Id: Common.pm,v 1.5 2003/02/27 18:32:59 phish108 Exp $
#-------------------------------------------------------------------------#
package XML::LibXML::Common;
#-------------------------------------------------------------------------#
# global blur #
#-------------------------------------------------------------------------#
use strict;
require Exporter;
require DynaLoader;
use vars qw( @ISA $VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS);
@ISA = qw(DynaLoader Exporter);
$VERSION = '0.13';
bootstrap XML::LibXML::Common $VERSION;
#-------------------------------------------------------------------------#
# export information #
#-------------------------------------------------------------------------#
%EXPORT_TAGS = (
all => [qw(
ELEMENT_NODE
ATTRIBUTE_NODE
TEXT_NODE
CDATA_SECTION_NODE
ENTITY_REFERENCE_NODE
ENTITY_NODE
PI_NODE
PROCESSING_INSTRUCTION_NODE
COMMENT_NODE
DOCUMENT_NODE
DOCUMENT_TYPE_NODE
DOCUMENT_FRAG_NODE
DOCUMENT_FRAGMENT_NODE
NOTATION_NODE
HTML_DOCUMENT_NODE
DTD_NODE
ELEMENT_DECLARATION
ATTRIBUTE_DECLARATION
ENTITY_DECLARATION
NAMESPACE_DECLARATION
XINCLUDE_END
XINCLUDE_START
encodeToUTF8
decodeFromUTF8
)],
w3c => [qw(
ELEMENT_NODE
ATTRIBUTE_NODE
TEXT_NODE
CDATA_SECTION_NODE
ENTITY_REFERENCE_NODE
ENTITY_NODE
PI_NODE
PROCESSING_INSTRUCTION_NODE
COMMENT_NODE
DOCUMENT_NODE
DOCUMENT_TYPE_NODE
DOCUMENT_FRAG_NODE
DOCUMENT_FRAGMENT_NODE
NOTATION_NODE
HTML_DOCUMENT_NODE
DTD_NODE
ELEMENT_DECLARATION
ATTRIBUTE_DECLARATION
ENTITY_DECLARATION
NAMESPACE_DECLARATION
XINCLUDE_END
XINCLUDE_START
)],
libxml => [qw(
XML_ELEMENT_NODE
XML_ATTRIBUTE_NODE
XML_TEXT_NODE
XML_CDATA_SECTION_NODE
XML_ENTITY_REF_NODE
XML_ENTITY_NODE
XML_PI_NODE
XML_COMMENT_NODE
XML_DOCUMENT_NODE
XML_DOCUMENT_TYPE_NODE
XML_DOCUMENT_FRAG_NODE
XML_NOTATION_NODE
XML_HTML_DOCUMENT_NODE
XML_DTD_NODE
XML_ELEMENT_DECL
XML_ATTRIBUTE_DECL
XML_ENTITY_DECL
XML_NAMESPACE_DECL
XML_XINCLUDE_END
XML_XINCLUDE_START
)],
gdome => [qw(
GDOME_ELEMENT_NODE
GDOME_ATTRIBUTE_NODE
GDOME_TEXT_NODE
GDOME_CDATA_SECTION_NODE
GDOME_ENTITY_REF_NODE
GDOME_ENTITY_NODE
GDOME_PI_NODE
GDOME_COMMENT_NODE
GDOME_DOCUMENT_NODE
GDOME_DOCUMENT_TYPE_NODE
GDOME_DOCUMENT_FRAG_NODE
GDOME_NOTATION_NODE
GDOME_HTML_DOCUMENT_NODE
GDOME_DTD_NODE
GDOME_ELEMENT_DECL
GDOME_ATTRIBUTE_DECL
GDOME_ENTITY_DECL
GDOME_NAMESPACE_DECL
GDOME_XINCLUDE_END
GDOME_XINCLUDE_START
)],
encoding => [qw(
encodeToUTF8
decodeFromUTF8
)],
);
@EXPORT_OK = (
@{$EXPORT_TAGS{encoding}},
@{$EXPORT_TAGS{w3c}},
@{$EXPORT_TAGS{libxml}},
@{$EXPORT_TAGS{gdome}},
);
@EXPORT = (
@{$EXPORT_TAGS{encoding}},
@{$EXPORT_TAGS{w3c}},
);
#-------------------------------------------------------------------------#
# W3 conform node types #
#-------------------------------------------------------------------------#
use constant ELEMENT_NODE => 1;
use constant ATTRIBUTE_NODE => 2;
use constant TEXT_NODE => 3;
use constant CDATA_SECTION_NODE => 4;
use constant ENTITY_REFERENCE_NODE => 5;
use constant ENTITY_NODE => 6;
use constant PROCESSING_INSTRUCTION_NODE => 7;
use constant COMMENT_NODE => 8;
use constant DOCUMENT_NODE => 9;
use constant DOCUMENT_TYPE_NODE => 10;
use constant DOCUMENT_FRAGMENT_NODE => 11;
use constant NOTATION_NODE => 12;
use constant HTML_DOCUMENT_NODE => 13;
use constant DTD_NODE => 14;
use constant ELEMENT_DECLARATION => 15;
use constant ATTRIBUTE_DECLARATION => 16;
use constant ENTITY_DECLARATION => 17;
use constant NAMESPACE_DECLARATION => 18;
#-------------------------------------------------------------------------#
# some extras for the W3 spec
#-------------------------------------------------------------------------#
use constant PI_NODE => 7;
use constant DOCUMENT_FRAG_NODE => 11;
use constant XINCLUDE_END => 19;
use constant XINCLUDE_START => 20;
#-------------------------------------------------------------------------#
# libxml2 compat names #
#-------------------------------------------------------------------------#
use constant XML_ELEMENT_NODE => 1;
use constant XML_ATTRIBUTE_NODE => 2;
use constant XML_TEXT_NODE => 3;
use constant XML_CDATA_SECTION_NODE => 4;
use constant XML_ENTITY_REF_NODE => 5;
use constant XML_ENTITY_NODE => 6;
use constant XML_PI_NODE => 7;
use constant XML_COMMENT_NODE => 8;
use constant XML_DOCUMENT_NODE => 9;
use constant XML_DOCUMENT_TYPE_NODE => 10;
use constant XML_DOCUMENT_FRAG_NODE => 11;
use constant XML_NOTATION_NODE => 12;
use constant XML_HTML_DOCUMENT_NODE => 13;
use constant XML_DTD_NODE => 14;
use constant XML_ELEMENT_DECL => 15;
use constant XML_ATTRIBUTE_DECL => 16;
use constant XML_ENTITY_DECL => 17;
use constant XML_NAMESPACE_DECL => 18;
use constant XML_XINCLUDE_START => 19;
use constant XML_XINCLUDE_END => 20;
#-------------------------------------------------------------------------#
# libgdome compat names #
#-------------------------------------------------------------------------#
use constant GDOME_ELEMENT_NODE => 1;
use constant GDOME_ATTRIBUTE_NODE => 2;
use constant GDOME_TEXT_NODE => 3;
use constant GDOME_CDATA_SECTION_NODE => 4;
use constant GDOME_ENTITY_REF_NODE => 5;
use constant GDOME_ENTITY_NODE => 6;
use constant GDOME_PI_NODE => 7;
use constant GDOME_COMMENT_NODE => 8;
use constant GDOME_DOCUMENT_NODE => 9;
use constant GDOME_DOCUMENT_TYPE_NODE => 10;
use constant GDOME_DOCUMENT_FRAG_NODE => 11;
use constant GDOME_NOTATION_NODE => 12;
use constant GDOME_HTML_DOCUMENT_NODE => 13;
use constant GDOME_DTD_NODE => 14;
use constant GDOME_ELEMENT_DECL => 15;
use constant GDOME_ATTRIBUTE_DECL => 16;
use constant GDOME_ENTITY_DECL => 17;
use constant GDOME_NAMESPACE_DECL => 18;
use constant GDOME_XINCLUDE_START => 19;
use constant GDOME_XINCLUDE_END => 20;
1;
#-------------------------------------------------------------------------#
__END__
=head1 NAME
XML::LibXML::Common - Routines and Constants common for XML::LibXML and XML::GDOME
=head1 SYNOPSIS
use XML::LibXML::Common;
=head1 DESCRIPTION
XML::LibXML and XML::GDOME share some of the same functionality. This
package should bundle some shared constansts and functions, so both
modules may coexist within the same scripts.
XML::LibXML::Common defines all node types as constants. While
XML::LibXML and XML::GDOME originally declared their own node type
definitions, one may want to use XML::LibXML::Common in its
compatibility mode:
=over 4
=item * use XML::LibXML::Common qw(:libxml);
:libxml will use the XML::LibXML Compatibility mode, which defines the
old 'XML_' node-type definitions
=item * use XML::LibXML::Common qw(:gdome);
This allows one to use the XML::LibXML Compatibility mode, which
defines the old 'GDOME_' node-type definitions
=item * use XML::LibXML::Common qw(:w3c);
This uses the nodetype definition names as specified for DOM.
=item * use XML::LibXML::Common qw(:encoding);
This is ment if only the encoding functions of XML::LibXML::Common
should be used.
=back
By default the W3 definitions as defined in the DOM specifications and
the encoding functions are exported by XML::LibXML::Common.
=head2 encoding functions
To encode or decode a string to or from UTF-8 XML::LibXML::Common exports
two functions, which use the encoding mechanism of the underlaying
implementation. These functions should be used, if external encoding
is required (e.g. for queryfunctions).
=head2 encodeToUTF8
$encodedstring = encodeToUTF8( $name_of_encoding, $sting_to_encode );
The function will encode a string from the specified encoding to UTF-8.
=head2 decodeFromUTF8
$decodedstring = decodeFromUTF8($name_of_encoding, $string_to_decode );
This Function transforms an UTF-8 encoded string the specified
encoding. While transforms to ISO encodings may cause errors if the
given stirng contains unsupported characters, both functions can
transform to UTF-16 encodings as well.
Note that both encoding functions report their errors on the standard
error. If an error occours the function will croak(). To catch the
error information it is required to call the encoding function from
within an eval block to avoid a script to stop.
=head1 AUTHOR
Christian Glahn, (christian.glahn@uibk.ac.at) Innsbruck University
=head1 COPYRIGHT
(c) 2002 Christian Glahn. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 SEE ALSO
L<perl>, L<XML::LibXML>, L<XML::GDOME>
=cut