Cornell Institute for Digital Collections

EAD/XML Finding Aids Project - Technical Information

Description of our current implementation, 15 May 1999

We'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.

  1. default.htm establishes the frameset, loading the xml finding aid in the right frame and a navigation page in the left. Navigation is created in html by loading an xsl document (nav.xsl) and directing it to take data from the xml finding aid. (To view default.htm, open one of the finding aids and select 'Source' from the 'View' menu.)
  2. nav.xsl formats a navigation frame by pulling data (publisher information and section headings) from the xml finding aid. (View a sample nav.xsl document here.)
  3. the EAD/XML encoded finding aid. (To view the EAD encoded source, right click in the right hand frame and select 'View Source,' or load the finding aid without frames (an option on the navigation bar) and select 'Source' from the 'View' menu.)

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
%>

Future work

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.

Our previous implementation descriptions and progress reports:

Contact information

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)