Cornell Institute for Digital CollectionsWe're delivering our finding aids from a Dell Pentium II Xeon (400MHz), running NT Server 4.0 and using IIS 4.0 as its web server. If serving xml documents, one should map the MIME type "text/xml" to "xml" in the server's file types settings.
How our system works: we pass ID values (collection numbers) to a single active server page script (.asp file). See Code 1 below for the current script. Right now we're passing these values via a browse list of available finding aids, but they could just as well be returned from a query mechanism.
The asp code first evaluates a user's browser. If the browser is not xml compatible, it brings together the xml finding aid with an xsl style sheet to create an html page dynamically. IE5 needs to be installed on the server for this to work properly.
If the user's browser is xml compatible (IE5 or higher), the asp script passes the user on to the appropriate finding aid directory.
Each EAD/XML encoded finding aid has its own directory, which contains three files.
All of our finding aids currently use the same xsl style sheet (style.xsl). Thus far we've been adjusting the style sheet as new features in our encoding appear. We'll continue to do this for now, although we imagine a time when developing multiple style sheets may be a more efficient way to handle certain finding aids.
Code 1
| <% Set bc = Server.CreateObject("MSWC.BrowserType") req = Request.QueryString("xml") sXml = req & "/" if (bc.browser="IE" and bc.version >= 5.0) then Response.redirect(sXml) else Response.write("<center><table border=" & Chr(34) & "2" & Chr(34) & " color="& Chr(34) & "red" & Chr(34) & ">" & _ "<TR><TD><p align=" & Chr(34) & "center" & Chr(34) & ">" & _ "<font color=" & Chr(34) & "red" & Chr(34) & " size=" & Chr(34) &"+2" & Chr(34) & ">" & _ "You've requested an XML document, but your browser is not XML capable.<BR> " & _ "We've delivered an HTML version instead.</font></p></TD></TR>" &_ "</table></center>") sXml = sXml & req & ".xml" sXsl = "styles/style.xsl" Set oXmlDoc = Server.CreateObject("MICROSOFT.XMLDOM") Set oXslDoc = Server.CreateObject("MICROSOFT.XMLDOM") oXmlDoc.async = false oXslDoc.async = false oXmlDoc.load(Server.MapPath(sXml)) oXslDoc.load(Server.MapPath(sXsl)) Response.Write(oXmlDoc.transformNode(oXslDoc)) end if %> |
Our current arrangement won't scale well. Every default.htm and nav.xsl document needs to be customized for each finding aid. Although these are minor alterations per item (entering a collection name or number once in nav.xsl and three times in default.htm), maintenance over a large collection of finding aids will be tedious.
To correct this problem, we'll make more use of our asp script, eventually getting it to perform all the functions that default.htm and nav.xsl now do. This will give us one maintenance point for adjusting navigation functionality and style. XML finding aids can then be dumped into a single directory without having to worry about creating attendant files for each.
We have some work yet to do on the dynamic creation of html versions for non IE5 browsers. Internal linking breaks. Also, we're calling an xsl style sheet assigned directly in the asp script, rather than being able to identify and call the style sheet declared in the xml document. This does have certain benefits, in that it allows us to use a different style sheet to create html versions, should it be desirible to style these versions differently (right now we're not). On the other hand, it won't scale well unless a single style will work for all html conversions. Finally, we may try to add some navigation features for the dynamically created html versions.
Beyond issues of display, we're also beginning to explore methods for searching across the finding aid collection.
This is a cooperative project between CIDC and the Division of Rare and Manuscript Collections. Please feel free to let us know if you're experiencing problems or have additional questions.
David Ruddy (dwr4@cornell.edu)