Programming Assignment #7
Using XQuery

Due on Friday April 21 before midnight.


The purpose of this project is to learn XQuery.

This project must be done individually. No copying is permitted. Note: We will use a system for detecting software plagiarism, called Moss, which is an automatic system for determining the similarity of programs. That is, your program will be compared with the programs of the other students in class as well as with the programs submitted in previous years. This program will find similarities even if you rename variables, move code, change code structure, etc.

Note that, if you use a Search Engine to find similar programs on the web, we will find these programs too. So don't do it because you will get caught and you will get an F in the course (this is cheating). Don't look for code to use for your project on the web or from other students (current or past). Just do your project alone using the help given in this project description and from your instructor and GTA only.


You will do this project on your own PC/laptop. You will use Zorba, which is a free implementation of XQuery.

Put all XQueries in a file "queries.xq" and use the Zorba Command Line Utility to evaluate the XQueries.

Note: If you get the error message on Windows: "The program can not start because libiconv.dll is missing from your computer. Try reinstalling the program to fix the problem", rename the iconv.dll library in the bin folder to libiconv.dll.


The following provide some tutorials. Use them as a reference only.

Project Requirements

Consider the following XML document along with its DTD that describes auctions: (the zipped XML document)
It contains synthetic data (automatically generated). The words for text paragraphs are taken from Shakespeare's plays. There is also a DTD (the link is not broken; use Save As to save it) for the XML file but it is not very useful. Express the following queries using XQuery and run them against the file auction.xml using Zorba:
  1. Print the number of items listed on all continents.
  2. List the names of items registered in Europe along with their descriptions.
  3. List the names of persons and the number of items they bought.
  4. List all persons according to their interest (ie, for each interest category, display the persons on that category).
  5. Group persons by their categories of interest and output the size of each group.
  6. List the names of persons and the names of the items they bought in Europe.
  7. Give an alphabetically ordered list of all items along with their location.
  8. List the reserve prices of those open auctions where a certain person with id person3 issued a bid before another person with id person6. (Here before means "listed before in the XML document", that is, before in document order.)

What to Submit

Use the form below to submit your XQuery file (or you may zip all XQuery files and submit the zipped file).

Submit Project #7:

Last modified: 04/11/2017 by Leonidas Fegaras