Section: New Results
Static Analysis Techniques for XML Processing
Work on the static analysis of XML programs was continued along two main directions in 2009.
The first direction aims at exploring how our previous results on the static analysis of XPath can be extended to queries containing counting constraints. More precisely, we studied how a logic for finite trees capable of expressing upward and downward recursive navigation, can be equipped with a counting operator along regular path expressions. Queries with counting constraints are commonly used in document transformations or programs in which they select portions of documents subject to transformations. Static analysis of such a combined XPath fragment makes it possible to detect bugs in transformations and to perform many kinds of optimizations of document transformations. Preliminary results in this direction were published in [2] and [3] .
The second direction is related to the problem of XML Schemas evolution. In the web and in modern information systems, XML Schemas constantly evolve to cope with the natural evolution of the entities they describe. Schema evolutions may affect query results and potentially the validity of produced data. A challenge is therefore to assess and accommodate the impact of these changes in evolving XML applications. Such questions arise naturally in XML static analyzers. These analyzers often rely on decision procedures such as inclusion between XML schemas, query containment and satisfiability. However, existing decision procedures cannot be used directly in this context. The reason is that they are unable to distinguish information related to the evolution from information corresponding to bugs. We proposed a predicate language within a logical framework that can be used to make this distinction. Specifically, we proposed a system for monitoring the effect of schema evolutions on the set of admissible documents and on the results of queries. The system is very powerful in analyzing various scenarios where the result of a query may not be anymore what was expected. The system relies on a predicate language which allow a fine-grained analysis for a wide range of forward and backward compatibility issues. Moreover, the system can produce counterexamples and witness documents which are useful for debugging purposes. The current implementation has been tested with realistic use cases, where it allows identifying queries that must be reformulated in order to produce the expected results across successive schema versions. The corresponding results were published in [4] and [5] .