The task was to evaluate XML query languages for querying XML based repositories with an emphasis on XMI documents. For the evaluation I had to implement an experimental application in the context of software engineering, especially code generation.
The application I chose is a component of the OCL compiler developed by Frank Finger in [FF]. It provides the subset of the information of a UML model to the OCL compiler. This component has been described extensively in chapter 3.
For the implementation I gave XML-QL the first chance. After some experimenting I found out, that XML-QL isn't powerful enough to implement this component. This hit me by surprise. When I started with XML-QL I had the naive assumption, that all of the more complex query languages could handle this task. The exact reasons has been analyzed in chapter 4.
When XML-QL went out of the arena, I decided together with my tutor not to try another query language. Instead I did the implementation in pure Java. There were two reasons for this:
Now a word on the usability of the query languages (XML-QL and XSLT) in real life. To be honest I cannot say something really significant about this. The main problem for me was the quality of the prototypes I used. They are instable and incomplete. Sometimes something failed and I didn't know why. Sometimes something worked and I didn't know why. Error messages are poorly expressive, and often there is simply a NullPointerException thrown. I cannot imagine, how to use these prototypes for something more demanding than an evaluation exercise. So I didn't get the chance to use the query languages on a real task, and I cannot say, how they suit this.
For a practical application of query languages the implementations will have to become much more better. Until then, XML query languages will be of academic interest only.