.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "XML::Catalog 3pm" .TH XML::Catalog 3pm "2020-12-29" "perl v5.32.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" XML::Catalog \- Resolve public identifiers and remap system identifiers .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 6 \& use XML::Catalog; \& my $catalog=XML::Catalog\->new(\*(Aq/xml/catalog.cat\*(Aq); \& $catalog\->add(\*(Aqhttp://www.w3.org/xcatalog/mastercat.xml\*(Aq); \& my $sysid=$catalog\->resolve_public(\*(Aq\-//John Cowan//LOC Diacritics\*(Aq); \& my $newsysid=$catalog\->remap_system(\*(Aqhttp://www.w3.org\*(Aq); \& $parser\->setHandlers(ExternEnt=>$catalog\->get_handler($parser)); .Ve .SS "Oasis Example" .IX Subsection "Oasis Example" .Vb 4 \& $ perl \-e \*(Aquse XML::Catalog; \e \& $pubid = q|\-//OASIS//DTD DocBook XML V4.5//EN|; \e \& my $catalog=XML::Catalog\->new("/etc/xml/catalog"); \e \& print $catalog\->resolve_public($pubid), "\en";\*(Aq \& \& file:///usr/share/sgml/docbook/xml\-dtd\-4.5\-1.0\-51.el6/docbookx.dtd .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module implements draft 0.4 of John Cowan's \s-1XML\s0 Catalog (formerly known as XCatalog) proposal (). Catalogs may be written in either \s-1SOCAT\s0 or \s-1XML\s0 syntax (see the proposal for syntax details); XML::Catalog will assume \s-1SOCAT\s0 syntax if the catalog is not in well-formed \&\s-1XML\s0 syntax. .PP This module, as of 1.0.0, also supports Oasis \s-1XML\s0 catalogs. .SH "CONSTRUCTOR" .IX Header "CONSTRUCTOR" .IP "new(\s-1URL\s0 [,URL]*)" 4 .IX Item "new(URL [,URL]*)" Read the catalog identified by \s-1URL\s0 and return a catalog object implementing it. If more than one \s-1URL\s0 is given, chain the additional catalogs as extensions to the catalog (they will be searched before catalogs specified by \s-1EXTEND\s0 entries). .Sp All URLs must be absolute. A \s-1URL\s0 with no protocol is treated as a filename. .SH "METHODS" .IX Header "METHODS" .IP "add(\s-1URL\s0 [,URL]*)" 4 .IX Item "add(URL [,URL]*)" Chain the catalogs identified by the \s-1URL\s0(s) to the current catalog. .IP "resolve_public(\s-1PUBID\s0)" 4 .IX Item "resolve_public(PUBID)" Translate the public identifier \s-1PUBID\s0 to a system identifier. Returns undef if the identifier could not be translated. .IP "remap_system(\s-1SYSID\s0)" 4 .IX Item "remap_system(SYSID)" Remap the system identifier \s-1SYSID\s0 as specified by the catalog. Returns \&\s-1SYSID\s0 unchanged if no remapping was found. .IP "get_handler(\s-1PARSER\s0)" 4 .IX Item "get_handler(PARSER)" Returns a coderef to a resolver suitable for use as the ExternEnt handler for an XML::Parser object. The resolver will first attempt to resolve a public identifier if supplied, and then attempt to remap the resulting system identifier (or the original system identifier if no public identifier was supplied). It will then call the original ExternEnt handler associated with the parser object. \s-1PARSER\s0 is the parser object; it is needed as an argument in order to obtain the original handler. .ie n .IP "add_delegate($pubid, $href)" 4 .el .IP "add_delegate($pubid, \f(CW$href\fR)" 4 .IX Item "add_delegate($pubid, $href)" \&\s-1TBD\s0 .IP "add_extend($href)" 4 .IX Item "add_extend($href)" \&\s-1TBD\s0 .ie n .IP "add_extend_object($cat, $group )" 4 .el .IP "add_extend_object($cat, \f(CW$group\fR )" 4 .IX Item "add_extend_object($cat, $group )" \&\s-1TBD\s0 .ie n .IP "add_map($pubid, $href)" 4 .el .IP "add_map($pubid, \f(CW$href\fR)" 4 .IX Item "add_map($pubid, $href)" \&\s-1TBD\s0 .ie n .IP "add_remap($sysid, $href)" 4 .el .IP "add_remap($sysid, \f(CW$href\fR)" 4 .IX Item "add_remap($sysid, $href)" \&\s-1TBD\s0 .IP "build($url)" 4 .IX Item "build($url)" create new catalog object .IP "fix_base($url)" 4 .IX Item "fix_base($url)" \&\s-1TBD\s0 .IP "parse" 4 .IX Item "parse" \&\s-1TBD\s0 .IP "parse_SOCAT($ct)" 4 .IX Item "parse_SOCAT($ct)" \&\s-1TBD\s0 .IP "parse_XML($ct)" 4 .IX Item "parse_XML($ct)" \&\s-1TBD\s0 .IP "set_base($href)" 4 .IX Item "set_base($href)" \&\s-1TBD\s0 .SH "BUGS / TODO" .IX Header "BUGS / TODO" Searching of chained catalogs is not purely depth-first (\s-1EXTEND\s0 items in a chained catalog will be searched before \s-1EXTEND\s0 items in the original catalog. .PP Error checking leaves much to be desired. .SH "AUTHOR" .IX Header "AUTHOR" Current Author: .PP .Vb 1 \& Jeff Fearn Ejfearn@cpan.orgE. .Ve .PP Former Authors: .PP .Vb 1 \& Eric Bohlman Eebohlman@netcom.comE. .Ve .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (c) 1999\-2000 Eric Bohlman. All rights reserved. Copyright (c) 2013 Jeff Fearn. All rights reserved. .PP This program is free software; you can use/modify/redistribute it under the same terms as Perl itself.