\name{catalogResolve} \alias{catalogResolve} \title{Look up an element via the XML catalog mechanism} \description{ XML parsers use a catalog to map generic system and public addresses to actual local files or potentially different remote files. We can use a catalog to map a reference such as \code{https://www.omegahat.net/XSL/} to a particular directory on our local machine and then not have to modify any of the documents if we move the local files to another directory, e.g. install a new version in an alternate directory. This function provides a mechanism to query the catalog to resolve a URI, PUBLIC or SYSTEM identifier. This is now vectorized, so accepts a character vector of URIs and recycles \code{type} to have the same length. If an entry is not resolved via the catalog system, a \code{NA} is returned for that element. To leave the value unaltered in this case, use \code{asIs = TRUE} . } \usage{ catalogResolve(id, type = "uri", asIs = FALSE, debug = FALSE) } %- maybe also 'usage' for other objects documented here. \arguments{ \item{id}{the name of the (generic) element to be resolved} \item{type}{a string, specifying whether the lookup is for a uri, system or public element} \item{asIs}{a logical. If \code{TRUE} any element of \code{id} which is not resolved by the catalog system will be left as given in the call. If \code{FALSE}, such unresolved elements are identified by \code{NA}. } \item{debug}{logical value indicating whether to turn on debugging output written to the console (\code{TRUE}) or not (\code{FALSE}).} } \value{ A character vector. If the element was resolved, the single element is the resolved value. Otherwise, the character vector will contain no elements. } \references{ \url{http://www.xmlsoft.org} \url{http://www.sagehill.net/docbookxsl/Catalogs.html} provides a short, succinct tutorial on catalogs. } \author{Duncan Temple Lang} \seealso{ \code{\link{xmlTreeParse}} } \examples{ if(!exists("Sys.setenv")) Sys.setenv = Sys.putenv Sys.setenv("XML_CATALOG_FILES" = system.file("exampleData", "catalog.xml", package = "XML")) catalogResolve("-//OASIS//DTD DocBook XML V4.4//EN", "public") catalogResolve("https://www.omegahat.net/XSL/foo.xsl") catalogResolve("https://www.omegahat.net/XSL/article.xsl", "uri") catalogResolve("https://www.omegahat.net/XSL/math.xsl", "uri") # This one does not resolve anything, returning an empty value. catalogResolve("http://www.oasis-open.org/docbook/xml/4.1.2/foo.xsl", "uri") # Vectorized and returns NA for the first and /tmp/html.xsl # for the second. catalogAdd("http://made.up.domain", "/tmp") catalogResolve(c("ddas", "http://made.up.domain/html.xsl"), asIs = TRUE) } \keyword{IO} \concept{XML}