Hi Wendell,

I was not able to reproduce the problem based on your description. Here it is what I did:

I created a catalog which specifies another catalog as next catalog and that provides a mapping from a public identifier to a DTD file.

catalog.xml
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <nextCatalog catalog="catalog2.xml"/>
</catalog>

catalog2.xml
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <public publicId="testpublic" uri="dtd/test.dtd"/>
</catalog>

The DTD declares a test element with a default attribute, so we can see that added when we copy the document content with the XSLT script

test.dtd
<!ELEMENT test ANY>
<!ATTLIST test att CDATA "value">

Then I created an XSLT script that uses the collection function to copy the test.xml content:

test.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:template match="/">
<xsl:apply-templates select="collection('collection.xml')/*" mode="copy"/>
    </xsl:template>

    <xsl:template match="node() | @*" mode="copy">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*" mode="#current"/>
        </xsl:copy>
    </xsl:template>

</xsl:stylesheet>

collection.xml
<collection stable="true">
   <doc href="test.xml"/>
</collection>

When run, this stylesheet will return:

<test att="value">george</test>

Now, I created an XProc script which runs the same stylesheet:

<p:declare-step xmlns:p="http://www.w3.org/ns/xproc";
    xmlns:c="http://www.w3.org/ns/xproc-step"; version="1.0">
    <p:input port="source">
        <p:inline>
            <doc>Hello world!</doc>
        </p:inline>
    </p:input>
    <p:output port="result"/>
    <p:xslt>
        <p:input port="parameters">
            <p:empty/>
        </p:input>
        <p:input port="stylesheet">
            <p:document href="test.xsl"/>
        </p:input>
    </p:xslt>
</p:declare-step>

and the result is the same:

<test att="value">george</test>

Best Regards,
George
--
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

On 25/03/16 20:53, Wendell Piez wrote:
Hi,

I have a catalog set up for my project, which calls another catalog on
my system, which resolves FPIs to paths.

When I validate a document calling one of the DTDs at the far end of
this chain, it works -- oXygen finds the DTD and validates the file.

Same thing when the same document is called in via the collection()
function in an XSLT - the file parses. (Plus, I know the DTD is looked
for and found because if I break the link by changing the FPI, it is
not found and I get an error. Plus if I set oXygen to show me its
catalog lookups, there they are.)

However, when I run the same stylesheet inside an XProc pipeline run
by Calabash inside oXygen, I get an error "this document will be
excluded from the collection" and a message to the effect that the DTD
could not be found.

What am I missing? Apparently while XML Calabash will use the catalog,
and Saxon will use the catalog, Saxon-inside-Calabash will not?

Does anyone have any insight or workarounds to share?

Cheers, Wendell

_______________________________________________
oXygen-user mailing list
[email protected]
https://www.oxygenxml.com/mailman/listinfo/oxygen-user

Reply via email to