CSE 131A Resources

XML Onyx XQuery Java JFlex CUP CUP CVS Make

XML

The Extensible Markup Language (XML) is a large suite of standards for describing the format and meaning of data to support the computerized access to its information.  XML is a subset of SGML. Its goal is to enable documents to be served, received, and processed on the Web in the way that is now possible with HTML. XML has been designed for ease of implementation and for interoperability with both SGML and HTML.

The coursework for CSE-131A will use XML extensively.  This XML Quick Intro may help get you started. For more detailed information see the W3C XML documentation or Coverpages XML Documentation

Sources of XML.    Browse some sample XML files.

Onyx and Onyx_xml

Onyx is the XQuery subset we will use in CSE 131A. A working scanner, parser, and interpreter will be made available later in the course via a web interface. Onyx differs from W3C XQuery in various ways, but provides a useful subset of functionality that will enable us to implement interesting XML queries. The complete specification is found HERE

The onyx_xml library may be used to create OXML documents in memory, to output them to a file, and also to read a compliant OXML document into memory. From ACS machines, it is pre-installed in the CSE 131A Tools directory: ~cs131w/../public/Tools/onyx_xml.jar. Documentation is found here.

Java

Sun makes much of its Java 2 SE documentation available on-line.  This is valuable development aid.
If you are new to Java 1.5, here is a document describing the differences between versions 1.4 and 1.5. Here is a writeup describing how to use Java Exceptions and here is some documentation on JUnit, Testing resource for Extreme Programming, and the JUnit Cookbook

XQuery

XQuery is a query language for XML documents.  It was designed so that queries are concise and easily understood. It is also flexible enough to query a broad spectrum of XML information sources, including both databases and documents.  Official XQuery documentation describes the latest version of the language in detail.

Here are several other resources about XQuery:
    An Introduction to XQuery  by Bas de Bakker and Irsan Widarto
    What is XQuery?  by Per Bothner
    An Introduction to XQuery by Howard Katz
Howard Katz' site at www.fatdog.com points to other sources of information.




Tools

xmldiff & xmlpp

Xmlpp is an XML "pretty-printer" that formats XML files in a readable way; xmldiff is a tool that shows you the differences between two XML files.  These tools are portable and written in Perl,  They are available in the CSE 131A environment.  Run  xmlpp -h   and   xmldiff -h  for documentation. A useful option is the -ns option, which avoids output where there are no differences (otherwise idential text appears in pale color.)

The tools licensed under a BSD-style license, and are available from DecisionSoft :

    Download xmlpp
    Download xmldiff

 

JFlex

The coursework for CSE-131A is based on the 1.4.1 release of JFlex. JFlex is a Java-based scanner generator tool.  It generates high-quality scanners from an input grammar of regular expressions. From ACS machines, it is pre-installed in the CSE 131A “~cs131w/public/Tools/JFlex” directory.   JFlex is free software, released under the GPL, and available for free download.  Students can also obtain the distribution files directly from the vendor at www.jflex.de

JFlex is designed to work together with the LALR parser generator CUP by Scott Hudson, and the Java modification of Berkeley Yacc BYacc/J by Bob Jamison. It can also be used together with other parser generators like ANTLR or as a standalone tool. [from the JFlex web site]

 

CUP

CUP (Constructor of Useful Programs) is a Java-based LALR parser generator. CUP is similar to the traditional C-based YACC parser generator, but it produces its parsers in Java.  The coursework for CSE-131A is based on the CUP version 11 release from Technical University of Munich. From ACS machines, it is pre-installed as a jar file in the CSE 131A Tools directory: ~cs131w/public/Tools/java-cup-v11a.jar.  CUP is free software, released under the GPL, and available for free download.  Students can also obtain the distribution files directly from the support site: http://www2.cs.tum.edu/projects/cup/.