I believe the answer to all such questions should be before. The catalog
should not "show through" to the infoset in any way.
Without any knowledge of how the catalog is implemented, I would guess the
problem is in the entity resolver. It is probably returning the system id of
the actual location it fetched the resource from rather than, as it should,
the "virtual" system id it was handed.
Bob Foster
"Vincent Lefevre" <vincent+news@vinc17.org> wrote in message
news:20030909230157$78ea@vinc17.org...[color=blue]
> I would like to know if the base URI considered to resolve an unparsed
> entity defined by a relative URI should be the URI before or after its
> rewriting due to a possible catalog.
>
> Let's take an example. Here's my XML file:
>
> <?xml version="1.0"?>
> <!DOCTYPE para
> PUBLIC "-//Norman Walsh//DTD Website Full V2.4.0//EN"
> "http://docbook.sourceforge.net/release/website/2.4.0/website-full.dtd"
> [
> <!ENTITY % entities SYSTEM "http://www.vinc17.org/www.ent">
> %entities;
> ]>
> <para><olink targetdocent="local.index.en">test</olink></para>
>
> and my XSLT file:
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="olink">
> <a href="{unparsed-entity-uri(@targetdocent)}">
> <xsl:apply-templates/>
> </a>
> </xsl:template>
> </xsl:stylesheet>
>
>
http://www.vinc17.org/www.ent is a file in which I define unparsed
> entities that are relative to
http://www.vinc17.org/. For instance:
>
> <!ENTITY local.index.en SYSTEM "index.en.html" NDATA XML>
>
> As I don't want to connect to
http://www.vinc17.org/ to generate the
> URI, I use a catalog with the following entry:
>
> <rewriteSystem systemIdStartString="http://www.vinc17.org/www.ent"
> rewritePrefix="file:///home/lefevre/wd/www-new/www.ent"/>
>
> (in fact,
http://www.vinc17.org/www.ent doesn't even exist in the
> reality, however the XSLT processor doesn't have to know that). But
> then, xsltproc generates the following file:
>
> <?xml version="1.0"?>
> <a href="file:///home/lefevre/wd/www-new/index.en.html">test</a>
>
> instead of:
>
> <?xml version="1.0"?>
> <a href="http://www.vinc17.org/index.en.html">test</a>
>
> Is that correct? I would have said that since the XSLT specifications
> don't define the notion of catalog, a catalog should be regarded only
> as a cacheing system (i.e. transparent for XML generation by XSLT); in
> this case, I should have got the version with
http://www.vinc17.org/.
>
> Otherwise, I would have been interested in a different version of the
> unparsed-entity-uri function that would have yielded a relative URI. If
> I define all the URIs and filenames with relative names, then xsltproc
> does generate a relative URI, but this URI is relative to the current
> directory and not the document defining the entity; therefore this is
> not acceptable.
>
> --
> Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/> -[/color]
100%[color=blue]
> validated (X)HTML - Acorn Risc PC, Yellow Pig 17, Championnat[/color]
International[color=blue]
> des Jeux Mathématiques et Logiques, TETRHEX, etc.
> Work: CR INRIA - computer arithmetic / SPACES project at LORIA[/color]