XZES40 / XZES40-Transformer

All of the code for the XZES project
Apache License 2.0
0 stars 0 forks source link

XZES40-Transformer

This repository contains the Code, Code Documentation, Tests, Examples, and Build/Dev infrastructure for the Oregon State University + Apache Software Foundation Computer Science 2017 Capstone project. For more information about this project, see the project's LaTeX document repository

Build status

About the project

This project's purpose is to create an XML/XSLT transformation server which is

It achieves these by:

Feature Status
Processing documents in parallel. IMPLEMENTED
Using an in-memory cache to store processed documents. IMPLEMENTED
Using FPM to package the application. NOT IMPLEMENTED
Using the Apache Webserver to handle requests. IMPLEMENTED
And of course developing in the Open! IMPLEMENTED

For a complete guide on the design and purpose of this project refer to our LaTeX Documents Repository.

A what transformation server?

XML is a standard format for storing data, like JSON or YAML. XSLT, or XML Style Sheets, are used for performing transformations on data in XML sheets. For example:

Problem

Solution

Create an XML stylesheet (XSLT document) which specifies "if the is red, and the is between 2000 and 2015, include it in the output" (in psuedo XSLT).

The XZES40-Transformer application is used to perform these transformations over the internet so one can process data without installing heavy XML transformation applications locally.

How do I use this?

The easiest way to use the application is to run a small Virtual Machine (VM). The application is designed to be run on Apache, but it is not encouraged that you install, run, or develop the application on your personal machine.

The tool the development team uses to run the application in a VM is Vagrant. Vagrant is a Command Line Interafce (CLI) interface for pulling, provisioning, and running VM with arbitrary back-ends. This means you can use the same commands to run a VirtualBox, VMWare, or Docker machine. Vagrant runs on Linux, BSD, Windows, and MacOS, so it is highly accessible for development.

Once you have Vagrant installed and setup on your system you should be able to run vagrant up. Once the machine is setup it will give you a URL to visit in your local web browser. Visit that page and you'll be using the application!

For information on running the application with Vagrant, see the vagrant directory's README file.

Where is everything?

There are three components to the XZES40-Transformer project.

Component Description
transformer Core of the project. Actually performs XML transformations.
cgi-glue Bridge between the transformer and web UI.
frontend Web interface for the application. Accepts XML transformation requests, displays results to user.

Each of these components can be found under the xzes directory. Each component has an explanatory README which explains what it in greater detail is and how it works.

How can I test?

In the directory xzes/transformer/test/simple_test_file we have provided a simple test script that you can run on your local system which connects to the server running via Vagrant.. Just run ./simple_test.sh and then you should see HTTP 200 OK responses and transformed XML documents..

Contributing

If you have interest in contributing to this project, great!

Please create an issue and see if the developers respond. If you have a fix for your issue, make a pull request by forking the project, doing your work on your fork, and clicking the Create a Pull Request button once you push your changes to that fork.

We have a Vagrant Box which is probably your best way to test code-changes. See the vagrant directory for details about that work-flow.

A note about names

There might be a bit of confusion about what is named what and why:

Most things, unless they are the group or project, are just xzes. The project as a whole is XZES40-transformer. There are no components called simply XZES40, although during development some components were.

License

This software is licensed under Apache 2.0. Read the LICENSE file for more information.