====== 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. Quite the mouthful, I'm afraid. Let's go bit by bit: * 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, well, it isn't magic: 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 [[Document Format Descriptors]] 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 [[http://www.w3.org/TR/xslt|XSLT 1.0]] stylesheets, extended through a few new [[http://www.w3.org/TR/xpath|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? ===== Let me emphasize this: //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 (TM) 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 [[http://www.cs.utexas.edu/~moore/acl2/|ACL2]] automated theorem prover. In case you're feeling too lazy to check the link (shame on you ;-), by the way), let's just say that ACL2 is indeed a very powerful system, but its output format leaves something to be desired. Real-world scenarios can produce tens of megabytes of unformatted text which is a mix of 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, you see. 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, if I must say so. Of course, it couldn't open full-blown proofs yet, but it could handle most educational examples and produce very nice output. When the [[http://concursosoftwarelibre.org/|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 stuff was 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 [[http://xmleye.wordpress.com/2008/04/14/algunos-paseos-por-xmleye/|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 [[https://forja.rediris.es/projects/csl2-xmleye/|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: * [[Compiling From Source]] * [[Using A Prepackaged Distribution]] * [[Installation From Debian Package Repository]]