Alan,
Yes. Life can be made easier by adding session-context in the response, that makes the response "self-describing" or self-containing".
BTW similar examples were already available via the ZiNG-page for SRU from the very first beginning. See:
http://www.loc.gov/z3950/agency/zing/srw.html#sru
A more uptodate example is:
http://redbelly.kb.nl/coop/tel/teldbs.xml
This example does not use xslt but xsl and the transformation is done by the browser (currently only IE). This example shows a SRU-portal allowing distributed searching written in only a few lines of XSL and Javascript running in the browser (see explanation below). The nice things of this approach is that you can easily personalize this portal by changing the stylesheets according to your own wishes because these stylesheets are accessible.
It is a pity that this concept is not really adopted by others because it is a VERY powerful concept. The portal you see in the example is itself a stylesheet and the xml is an SRU-response containing a list of targets. You can create your own list of targets using the same stylesheet or other stylesheets. The most interesting aspect of this concept can be seen when you search for "type:collection". The result of this search - for the first target - is a new list of records which are recognized as targets. Pressing the select button will transform this a new search page.
Explanation:
The file teldbs.xml is a list of xml-records describing SRU-targets. In the XML-header there is a reference to the stylesheet telportal.xsl. This stylesheet transforms teldbs.xml to HTML. This HTML page allows you to do a distributed search and collects the XML-responses and when the response is received the button text changes to "display". By pressing such a button the xml will be transformed with the stylesheet teldemo.xsl (or select another one in the search page).
The server on which this is running is very slow but will be replaced in about a month. The functionality is developed for specific puposes and not for end users. The display is therefore kept rather sober. The uptodate example is for testing and will not always work.
Theo
>>> [log in to unmask] 09-07-02 03:26 >>>
I have been playing with another little project very similar to SRU
(but not exactly SRU). I purposely set out to do whatever was easy
for me at the time just to learn what the issues might be.
The program I am playing with is available at:
http://inquirion.com:8123/static/query.html
If you type in a query of '?' you will get all records in the database.
If you remove the 'ss=summary' query parameter, you will see the XML
I am returning. The ss=summary parameter is doing a server side XSLT
transformation of the returned XML into HTML. People can guess what
the various URL parameters mean I am sure (rs, es, maxrecs, recnum).
This was also my first serious XSLT project, so I have been learning
bits about XSLT at the same time. Certainly not an expert though!
As a result of my playing, I suggest the following are worth considering
in SRU *if* people want to use XSLT to transform the output into HTML etc.
* Putting things like the result set index in both the header (returning
records 1 to 10) and on each <record> element, while redundant, makes
the stylesheet much easier to write.
* Echoing every part of the request is very useful as it allows the
stylesheet to form new URLs (the Next and Prev buttons on the
summary list for example).
* Echoing all the query parameters both as text and URL encoded (%hh sequences)
is useful, because XSLT does not have an easy way to do this. So I
output <ccl> and <cclParam> elements for example.
* Returning XML fields of record as XML directly in the response makes
life much easier.
Nothing deep here, and I can be easily shouted down. But there is nothing
like trying to write an XSLT stylesheet on the output to realise what
is important to XSLT writers!
Alan
|