Thursday, January 17, 2008 5:47 AM
Customising Search Results via XSLT
Recently I have been customising MOSS search results pages using XSLT and am quite pleased with the results ;-).
However, one requirement from our customer was to break up the document url into it's component parts and provide links to site and library and folder separately.
However once I click on the link for the folder, it does successfully take me to the folder but with one rather annoying problem..... as follows....
If the tree view is being displayed on the page then it will not expand the library to show the folders and highlight the chosen folder IF the document that was found was a PDF. The reason for this seems to be that the PDF iFilter always returns lower case urls, whereas the iFilters built into MOSS provide URLs with upper and lower case as they were originally typed into the system. e.g. http://moss/Docs/library/folder works fine but http://moss/docs/library/folder does not
My solution to this is to always ensure that internal names for sites and document libraries are always lower case.
This can be seen as either a Microsoft bug or an Adobe bug...
- MS because the tree view webpart does not work with any case URLs (even though the url is converted to uppercase in the browser, clearly behind the scenes the webpart is using the request passed in which is lower case; frankly all code and data for hierarchies in my mind should be stored in lower case for internal data as this would mean that these kind of problems would never occur).
- Adobe because they did not spot this MS issue during the testing of their iFilter - understandable though as default results pages do not provide a URL to anything other than the actual document and therefore this issue would not arise
This bug is annoying but as long as system designers are aware of this issue then it can be avoided. I recommend always avoiding this bug by ensuring that all of your internal names for site collections, sites, document libraries and lists are lower case. The titles(display names) can be any case.