XMLFramework Project Posted: Apr 22
The project is critical to your overall grade in the course, and parts count toward 25% of the questions on the Final Exam. Consider this a take-home part of the Final Exam. No matter how you performed on the previous projects, you need to work on this project.
The project is due by 11:59:59 pm on Friday, May 9. The project consists of the following:
- Parsing XML with a variety of push and pull parsers
- XPath evaluation - XPath is an addressing language for XML
- XSLT transformation - XSLT is a transformation language for XML
- Combining these operations as needed by the applications
The open-layered architecture framework, XMLFramework, supports all of this and includes:
- Apps
- Applications using the XMLFramework
- xmlpipeline.cpp - CLI for using the framework
- XMLFramework
- XMLToolkit
- Set of C++ classes for processing XML
- Used to implement XMLFramework, but can be used directly
- Where your XMLParser lives
- XMLLibrary
- Set of C functions for processing XML
- Used to implement the XMLToolkit, but can be used directly
There is a lot of code in the project already. The primary task is to finish the remaining @TODOs. Some examples are:
The `@TODOs that involve integrating your XMLParser into the framework are not required but, if completed, will count as extra credit for the projects.
The work involved is:
- (50%) Complete any
@TODO
s
- (20%) Fill in all classes
@pattern
and @role
comments. A class can participate in multiple roles in multiple patterns.
- (10%) Document the use of design patterns in the markdown file DESIGN.md. Each instance of a design pattern in XMLFramework must be listed, including the collaborators.
- (10%) Document the architectures used in the XMLFramework in the markdown file ARCHITECTURE.md
- (10%) Draw a UML diagram of the entire project in the file UML.pdf
Notes:
- The GitHub Classroom invitation link is on Brightspace.
- The answers to some questions on the Final Exam are from your work on this project. For example, instead of creating a UML diagram during the Final Exam, your UML diagram from this project is your Final Exam answer. You must do these parts as they also count toward the Final Exam.
- The project has a complete CMake build. You can add files to the subdirectories, and the CMake build will handle them automatically. Each file in the apps directory is assumed to be a single executable. If you add files, make sure you also commit and push them to GitHub. Always verify at GitHub that the correct files are there.
- In XMLFramework, the app, xmlpipeline, uses CLI11 for parsing command-line options. When you run cmake, the file is downloaded. Depending on many settings in Windows, the download may be unsuccessful and quietly result in an empty file. If this happens, let me know.
- To quickly find code,
git grep
works well. For all the lines of code that contain @TODO
, enter the command git grep "@TODO"
in the project's top directory. To see only the filenames, git grep -l "@TODO"
. The command depends on the directory where you issue the command, e.g., if in the directory framework, the results are for that directory and its subdirectories. To view a report of which @TODO
s are left, use the build target: make todo
. This command is entered in the build directory.