An XML graph is reminiscent of an XML tree but may contain loops and choices. Also, element/attribute names, attribute values, and chardata are described by regular string languages. An XML graph represents a (typically infinite) set of XML trees. The notion of XML graphs originates from program analysis of XML transformations (see for example the papers on Xact). Restricted RELAX NG is a subset of RELAX NG that is sufficient for translations from XML Schema and allows efficient validation of XML graphs.
The package provides the following features, among others:
- validation of XML documents and XML graphs relative to schemas written in XML Schema, DTD, or Restricted RELAX NG
- inclusion checking between schemas
- conversion from XML Schema or DTD to Restricted RELAX NG or XML graphs
Latest release (July 9 2010): version 0.9-7 (ChangeLog)
Available resources:
- View the online javadoc API specifications.
- See the usage of the command-line tool.
- Download the precompiled Java archive: schematools.jar (Java 5).
This depends on- automaton.jar from dk.brics.automaton,
- jdom.jar from jdom.org,
- jaxen.jar from jaxen.org, and
- trang.jar from James Clark's Trang.
- log4j.jar from Apache's log4J.
- Source code is available on request.
- Read the research paper:
XML Graphs in Program Analysis
[abstract |
PDF (journal version, draft) |
PDF (conference version)]
- or browse through this presentation of XML graphs and XSLT analysis - Some applications of dk.brics.schematools:
- Xact: static validation analysis of XML transformations
- XSugar: translating between XML and non-XML syntax
- Dongfang XSLT validator: static analysis of XSLT stylesheets
The dk.brics.schematools package is developed by Anders Møller and Christian Kirkegaard at Aarhus University.