Re: [xsl] Problem with Collections -- Getting a Failed to load colleaction catalogue error

Subject: Re: [xsl] Problem with Collections -- Getting a Failed to load colleaction catalogue error
From: Jeff Sese <jsese@xxxxxxxxxxxx>
Date: Wed, 27 Jun 2007 09:30:13 +0800
Thanks, i figured this out later in the day but forgot to tell the list about it... but thanks anyway!

--
Jeff

Abel Braaksma wrote:
Hi Jeff (2),

Sorry about my prev. post. If you use it on Windows, you should not have a problem with caps. Looking at your code again, I notice that you omitted the 'file:///' or 'file:/' on your commandline. The result is that you give a relative path, most likely relative to your current XSLT document, which is (again most likely) not what you want.

Change your path to file:///d:/your/path/here
And if you have spaces in your path, change them to %20 (it must be a correct URI).


I tried and tested the following, which works:

<xsl:for-each select="for $x in
collection('file:///d:/my%20long%20path/here?select=*.xml;recurse=yes;on-error=ignore')


        return saxon:discard-document($x)">
           <file-loaded href="{base-uri()}" />
  </xsl:for-each>

When you run it with your paths, it should display all documents it could find on that location (note that on-error=ignore only ignores non-xml docs, it does not ignore illegal path errors)

Cheers,
-- Abel Braaksma




Abel Braaksma wrote:
Hi Jeff,

I am guessing here: I note that the absolute path that you use differs in matters of caps compared to the reported path for the XSLT file, i.e. d:/rnd vs. D:/RND. May this be part of the problem (though I'd guess that a non-existing path should return an empty sequence or a different error)?

Hth,
-- Abel

Jeff Sese wrote:
Hi,

I have this instruction in my xsl:

<xsl:param name="path" as="xs:string" required="yes"/>
<xsl:variable name="docs" as="node()*" select="collection(concat($path, '?select=*.xml'))"/>


and trying to run it in the command line using:

java net.sf.saxon.Transform -it main xslt\Merge_Sort.xsl mode=body path=d:/rnd/Berichtigungsliste/sample/input/body > xslt\BL5-7_body_test.xml

but i get an error of:

Error on line 1 column 1 of file:///d:/rnd/Berichtigungsliste/sample/input/body:
SXXP0003: Error reported by XML parser: Content is not allowed in prolog.
Error FODC0005: org.xml.sax.SAXParseException: Content is not allowed in prolog.
Error on line 6 of file:/D:/RND/Berichtigungsliste/xslt/Merge_Sort.xsl:
FODC0004: Failed to load collection catalogue d:/rnd/Berichtigungsliste/sample/input/body
Transformation failed: Run-time errors were reported


But when i use a relative path as the value for $path like:

java net.sf.saxon.Transform -it main xslt\Merge_Sort.xsl mode=body path=../sample/input/body > xslt\BL5-7_body_test.xml

it works... what am i doing wrong here?

Thanks,
Jeff

Current Thread