XML::Catalogs - Basic framework to provide DTD catalogs
Version 1.6.0
To make a catalog: Use XML::Catalogs::HTML as an example To use a catalog: use XML::Catalogs::FOO -libxml; --- use XML::Catalogs::FOO; XML::Catalogs->notify_libxml(); --- use XML::Catalogs::FOO; my $url = XML::Catalogs::FOO->get_catalog_url(); my $path = XML::Catalogs::FOO->get_catalog_path();
To properly parse named entities in an XML document, the parser must have access to the XML subformat's DTDs.
XML::LibXML, for one, does not cache DTDs it downloads. Instead, it relies on them being in the system's XML catalog. This is not always configured properly for a number of reasons.
An XML catalog is simply a set of DTDs and a table of contents that associates DTD identifiers with the DTDs.
This module provides a simple framework to package XML catalogs. It also provides a simple method to notify XML::LibXML of DTDs that may not be present in the system's catalog.
It works on all platforms, it works without requiring root priviledges, and it works with CPAN's dependency system.
use XML::Catalogs::FOO -libxml
This loads XML::Catalogs::FOO and calls XML::Catalogs::FOO->notify_libxml()
XML::Catalogs::FOO->notify_libxml()
$subclass->notify_libxml()
This method informs XML::LibXML of the subclass's catalog. XML::LibXML will use the local DTDs referenced by the catalog instead of downloading them. This only affects the current process.
To have any effect, XML::LibXML's load_ext_dtd => 1 option must be used.
load_ext_dtd => 1
This mechanism does not stop working when XML::LibXML's no_network => 1 option is used.
no_network => 1
Note that XML::LibXML version 1.53 is required for this features.
$subclass->get_catalog_url()
Returns a file:// URL to the subclass's catalog.
$subclass->get_catalog_path()
Returns the file path of the subclass's catalog.
http://en.wikipedia.org/wiki/XML_Catalog, Wikipedia's entry on XML Catalogs.
XML::LibXML, an excellent XML parser that supports catalogs.
XML::Catalogs::HTML, a module using this framework.
http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic, An example of the real world effects of not having local DTDs.
You can find documentation for this module with the perldoc command.
perldoc XML::Catalogs
You can also find it online at this location:
https://metacpan.org/dist/XML-Catalogs
If you need help, the following are great resources:
https://stackoverflow.com/|StackOverflow
http://www.perlmonks.org/|PerlMonks
You may also contact the author directly.
Please report any bugs or feature requests using https://github.com/ikegami/perl-XML-Catalogs/issues. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
Web: https://github.com/ikegami/perl-XML-Catalogs
git: https://github.com/ikegami/perl-XML-Catalogs.git
Eric Brine, <ikegami@adaelis.com>
<ikegami@adaelis.com>
No rights reserved.
The author has dedicated the work to the Commons by waiving all of his or her rights to the work worldwide under copyright law and all related or neighboring legal rights he or she had in the work, to the extent allowable by law.
Works under CC0 do not require attribution. When citing the work, you should not imply endorsement by the author.
To install XML::Catalogs, copy and paste the appropriate command in to your terminal.
cpanm
cpanm XML::Catalogs
CPAN shell
perl -MCPAN -e shell install XML::Catalogs
For more information on module installation, please visit the detailed CPAN module installation guide.