>>>>> "Neil" == Neil Mitchell <[EMAIL PROTECTED]> writes:
>> In what way is the document() function not pure? Neil> See [http://www.w3schools.com/xsl/func_document.asp]. In Neil> particular their example: Neil> <xsl:value-of Neil> select="document('celsius.xml')/celsius/[EMAIL PROTECTED]"/> Neil> i.e. this function needs to load the file celsius.xml. No - it needs to retrieve the resource named by the relative URI 'celsius.xml'. If the base URI for the xsl:value-of element is a file URI, then this will indeed be a file. But that does not NECESSARILY imply any I/O. >> That is, the static context is defined to include a mapping >> from URIs to document nodes, and document() returns those >> document nodes that it's argument nodes map to. Neil> I think I understand what you are saying, but might have Neil> missed slightly. While you can consider it as a mapping from Neil> URI to document node, there are an infinite number of URI's, Neil> and therefore an infinite amount of context. A more Neil> practical implementation would be to retrieve the document Neil> nodes as they are requested, and then cache them - but this Neil> means having IO to do the initial retrieve. It does, in practise - but this might not be done as part of the tranformation - it might be done as part of the preparation. Likewise, in theory, parsing the initial XML document, and serialising the result, are not necessarily done by the XSLT processor. XSLT is defined as a transformation from an initial instance of the XPath data model (i.e. a tree of nodes in memory) to a new instance of the XPath data model. In practise, an XSLT processor will usually parse an XML file and serialise the result to a file (or network socket), but this is tectonically not part of the transformation. -- Colin Adams Preston Lancashire _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe