[xsl] xslt2: Retrieving a directory's non-XML file names

Subject: [xsl] xslt2: Retrieving a directory's non-XML file names
From: Yves Forkl <Y.Forkl@xxxxxx>
Date: Wed, 01 Oct 2008 12:07:20 +0200
Hi,

from a directory whose path is stored in $myDir I would like to retrieve the names of all files with extension ".txt". Of course that could be done easily using shell mecanisms, but I want to do this using XSLT 2 (with Saxon) only.

That appears to be somewhat difficult, at least I couldn't find the solution anywhere. Knowing that collection() allows to access all of the XML documents in a given directory, I tried this:

    <xsl:variable name="txt_files" as="xs:string*">
      <xsl:for-each
        select="collection(concat($myDir,
          '?select=*.txt;on-error=warn'))/saxon:discard-document(.)">
        <xsl:value-of select="unparsed-entity-uri(.)"/>
      </xsl:for-each>
    </xsl:variable>

This gives me

"Error SXXP0003: Error reported by XML parser: Premature end of file.
Transformation failed: Run-time errors were reported"

I guess the reason is that collection() is unable to return the document node for any of these text files.

So how to obtain the list of .txt files from my directory in XSLT 2?

Yves

Current Thread