Lab 3: XML Schema and modification
Due: Tuesday Feb 21, at the start of class. 30 points
Please
place a copy of your XML schema and your code in the cs682 submit
directory. Also, please place a README in the submit directory that
gives the URL referring to the location of your running resource.
In this lab, you'll develop an XML schema, and also extend the movie
database program from the previous lab.
- (10 points) Implement an XML schema for the movie database
developed for last week's lab. Your schema should indicaate that a
movie must have exactly one title, one or more directors, zero or
more actors, a length, and a year released. Rating and Genre should
be optional. You may decide how you want to deal with datatypes for
genre (whether you just want to use a string, or whether you'd
rather have an enumeration, for example). You must be able to
validate your database using a XSL validator such
as this
one.
- (20 points) Modify your code from lab 2 to use the DOM parser to
add new entries and modify existing entries. Provide a Web-based
interface to your code; a user should be able to load a URL and be
presented with an interface that allows him or her to search for
existing movies, change a movie's information, or add a new
movie. Your program should use XML and CSS to display the results
back to the user. The one non-negotiable requirement is this: your
service must be persistent. That is, you must be able to put it
online and leave it there indefinitely.
At this point, your interface does not need to be very complex
(although elegance is always encouraged), since we are only using CSS
for the display.
There are several possible ways to implement this, including the
following:
- CGI. If you choose to use CGI, please use boromir.cs.usfca.edu to
test your scripts, rather than
www.cs.usfca.edu. See
here for some hints on getting CGI up and running.
- Java Servlet. I recommend using a servlet container such as jetty
to do this - jetty is small and simple, and can be left running
indefinitely.
- .NET web forms. Talk to me if you're interested in this approach.
- Other ... if you have access to your own server, you might choose
to use some other server-side technology.