Subject: Re: [xsl] XALAN does not handle document('') as expected to carry out an in-stylesheet look-up From: David_N_Bertoni@xxxxxxxxx Date: Thu, 1 Nov 2001 15:12:40 -0500 |
Hi Mark, > Hi > > In order to sort items by date where we are provided with the date in dd > mmm yyyy format (e.g. 03 Jan 2001) I wanted to convert the MMM value to a > number which can be sorted. > > I used the approach where I embedded a look-up within the stylesheet and > then used the document('') function to look up the month in the table to > get the number to sort by (see code segment below). > > This works fine when I run XALAN from the command line. However my > application applies the template after reading the XSL transform from a > database and then applying it to a document. When this occurs XALAN > appears to be attempting to obtain a document from the file server when my > understanding was that the document('') function means that the lookup > table can be held within the stylesheet itself. > I think you're assuming that when Xalan processes the stylesheet for use as a stylesheet, that it also processes the stylesheet as a potential source document. This is not the case -- In a call to the document function, Xalan parses the stylesheet document separately, as though it were parsing any other source document. > Does anyone know if this is a known feature or have I missed something > here? Your help is appreciated. > > Thanks > > Mark Clare Working as designed. I suspect that most processors work this way, since stylesheets are processed with the goal of building an efficient run-time mechanism for performing the transformation described by the stylesheet. Also, there are different rules for interpreting stylesheet xml files and source documents. From the recommendation: "When the first argument to the document function is not a node-set, the first argument is converted to a string as if by a call to the string function. This string is treated as a URI reference; the resource identified by the URI is retrieved. The data resulting from the retrieval action is parsed as an XML document and a tree is constructed in accordance with the data model (see [3 Data Model])." and "Note that a zero-length URI reference is a reference to the document relative to which the URI reference is being resolved; thus document("") refers to the root node of the stylesheet; the tree representation of the stylesheet is exactly the same as if the XML document containing the stylesheet was the initial source document." Of course, a processor _could_ detect references to the stylesheet by looking for any calls to the document() function, but it would be impossible to detect all cases, so I don't see how this would work. You might think about using an EntityResolver to solve this problem. I'd recommend you post a question on the Xalan mailing list for more information. Dave XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XALAN does not handle doc, Michael Kay | Thread | Re: [xsl] XALAN does not handle doc, Thomas B. Passin |
[xsl] Problem solved, John Ericson | Date | Re: [xsl] XALAN does not handle doc, Thomas B. Passin |
Month |