Re: [xsl] XSLT collection function to get filenames

Subject: Re: [xsl] XSLT collection function to get filenames
From: "Colin Adams" <colinpauladams@xxxxxxxxxxxxxx>
Date: Tue, 18 Mar 2008 14:06:42 +0000
On 18/03/2008, Justin Johansson <procode@xxxxxxxxxxx> wrote:
> As yet I haven't explored the facility afforded by the XSLT/XPath 2
>  collection function but the question posed by this thread spurs asking the
>  list:
>
>  Can the collection function be used as a general (file system) directory
>  scanner for non XML files given that XSLT 2 allows the loading of non XML
>  documents via the unparsed-text function?

Yes it can. Of course, you first need an implementation that supports
a URI scheme that can scan directories. Arguably, file is legitimate
for this, as browsers usually give you a directory listing if you
supply a file URI that ends with a directory name.

What Gestalt does it return a sequence of documents each containing a
single element, which has various information about that directory
entry. You could then call unparsed-text on the document-uri for that
particular entry.

>  It's not unexpected but my investigation found that the (Saxon) XSLT
>  processor complained about the text file (containing 'the quick brown fox')
>  was not well-formed.
>
>       <xsl:for-each select="collection( '?select=fox.txt')">
>         <xsl:value-of select="document-uri(.)"/>
>       </xsl:for-each>

Note that that URI is not a legitimate file URI (they may not take
query parameters). Saxon is not compliant in this respect (but even if
it were, there is no particular reason that this should work - the
collection() function is very loosely define.

Current Thread