XMLEye: Main page¶
This is the main page for the XMLEye wiki. Please feel free to contribute.
What is XMLEye?¶
In short, XMLEye is a generic XML-based data-driven pipelined document viewer. Let's go by parts:
- It is generic because it can open mostly any kind of document you throw at it. It isn't tied to any particular format.
- However, it is XML-based because all input documents must be first converted to XML prior to their visualization. This isn't much of a problem, though: third-party converters can be easily plugged into XMLEye which perform this task. See Converters and DocumentFormatDescriptors for more details.
- It is data-driven because all the visualization logic for a specific format isn't in the Java code itself, but in external files. These external files are pretty much standard XSLT 1.0 stylesheets, extended through a few new XPath 1.0 functions, and structured somewhat to allow for inheritance, localization and runtime stylesheet selection. More information about it can be found under the StylesheetInfrastructure page.
- And finally, it is pipelined because the overall visualization process follows several steps. During this process, both document-wide and node-specific visualizations are generated. Check TransformationPipeline if you want to find out more.
Oh, and it's free software: it's entirely under the GPL, version 2 or later.
What can XMLEye be useful for?¶
XMLEye does not try to replace existing viewers. It is not a PDF reader, not a browser, or anything of the sort. It is better suited for niche formats, for which no good viewers exist. That includes ACL2 proofs, Saxon execution trace logs, Django fixtures, GNOME Planner files, Your XML/YAML/JSON format of the week and so on. File a feature request at the forge in case you're interested in a particular format.
So long as you can cook up something which turns it into XML, XMLEye can open it. That includes, but isn't limited to, Ruby, Perl or Python scripts, for instance. I have taken a liking to Perl for those sorts of tasks, but it's up to you.
Why did you make XMLEye?¶
Well, I didn't think this up out of nowhere, that's for sure :-D. For my technical engineering degree (about half-way of a Bachelors' in Spain) final project, I developed a viewer for the ACL2 automated theorem prover. ACL2 is a very powerful system, but its output format leaves something to be desired. Real-world scenarios can produce tens of megabytes of unformatted text mixing Lisp code, English text and other things like garbage collection messages. And proofs follow tree-like structures. Failed proofs are particularly complex, as ACL2 doesn't like to give up that easily :-).
So the approach my project directors and I came up with was to use a Perl script to turn those proofs to XML, and a Java viewer which would browse through those XML files using a richer format, such as XHTML. And it turned out pretty good! Of course, it couldn't open full-blown proofs yet, but it could handle most educational examples and produce very nice output.
When the II Concurso Universitario de Software Libre contest came up, I thought that the viewer's design could be generalized to handle not only ACL2 proofs, but pretty much any reasonably sane text-based input format. And that's how XMLEye started: the original viewer was redesigned with a tabbed interface, quite a few bugs were squashed and all ACL2-specific parts were moved elsewhere. Oh, and it also got Ubuntu packages, after more changes. A new document format (YAML 1.1) was introduced, and partial support for multi-file ACL2 proofs was added.
Do you have any screenshots or videos to look at?¶
Sure, check this blog post. I'm afraid it's in Spanish, but the videos are pretty self-explanatory.
How do I obtain XMLEye?¶
You can grab the source, documentation, report bugs, wish for features and more in XMLEye's RedIRIS forge space. The SVN source is, as usual, more up-to-date than the packed distributions.
There are a few ways to install XMLEye: here are some InstallationInstructions.