XML Goes Native: Run-Time Representations for Xtatic

Xtatic is a lightweight extension of C# offering native support for statically typed XML processing. XML trees are built-in values in Xtatic, and static analysis of the trees manipulated by programs is part of the ordinary job of the typechecker. “Tree grep” pattern matching is used to investigate and transform XML trees. Xtatic's surface syntax and type system are tightly integrated with those of C#. Beneath the hood, however, an implementation of Xtatic must address a number of issues common to any language supporting a declarative style of XML processing (e.g., XQuery, XSLT, XDuce, CDuce, Xact, Xen, etc.). In particular, it must provide representations for XML tags, trees, and textual data that use memory efficiently, support efficient pattern matching, allow maximal sharing of common substructures, and permit separate compilation. We analyze these representation choices in detail and describe the solutions used by the Xtatic compiler.

[1]  Philip Wadler The Concatenate Vanishes , 1987 .

[2]  Ioana Manolescu,et al.  XMark: A Benchmark for XML Data Management , 2002, VLDB.

[3]  Benjamin C. Pierce,et al.  XDuce: A statically typed XML processing language , 2003, TOIT.

[4]  Haim Kaplan,et al.  Simple Confluently Persistent Catenable Lists , 2000, SIAM J. Comput..

[5]  Giuseppe Castagna,et al.  CDuce: an XML-centric general-purpose language , 2003, ACM SIGPLAN Notices.

[6]  Benjamin C. Pierce,et al.  Paths Into Patterns , 2004 .

[7]  Haim Kaplan,et al.  Purely functional, real-time deques with catenation , 1999, JACM.

[8]  Benjamin C. Pierce,et al.  Regular expression pattern matching for XML , 2003, J. Funct. Program..

[9]  Haim Kaplan,et al.  Persistent lists with catenation via recursive slow-down , 1995, STOC '95.

[10]  Philip Wadler,et al.  Experience with an applicative string processing language , 1980, POPL '80.

[11]  M. R. Sleep,et al.  A short note concerning lazy reduction rules for append , 1982 .

[12]  Giuseppe Castagna,et al.  Semantic subtyping , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[13]  Robert M. Keller Divide and concer: Data structuring in applicative multiprocessing systems , 1980, LISP Conference.

[14]  Leon Sterling,et al.  The Art of Prolog , 1987, IEEE Expert.

[15]  Christian Kirkegaard,et al.  A Runtime System for XML Transformations in Java , 2004, XSym.

[16]  Akinori Yonezawa,et al.  Regular Expression Types for Strings in a Text Processing Language , 2002, Electron. Notes Theor. Comput. Sci..

[17]  Tim Furche,et al.  XPath: Looking Forward , 2002, EDBT Workshops.

[18]  Janis Voigtl Concatenate, Reverse and Map Vanish For Free , 2002 .

[19]  S. Boag,et al.  XQuery 1.0 : An XML query language, W3C Working Draft 12 November 2003 , 2003 .

[20]  Wolfram Schulte,et al.  Unifying Tables, Objects and Documents , 2003 .

[21]  Chris Okasaki,et al.  Amortization, lazy evaluation, and persistence: lists with catenation via lazy linking , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[22]  Benjamin C. Pierce,et al.  Regular expression types for XML , 2000, TOPL.

[23]  Benjamin C. Pierce,et al.  Regular Object Types , 2003, ECOOP.

[24]  Luca Cardelli,et al.  Greedy Regular Expression Matching , 2004, ICALP.

[25]  Luca Cardelli,et al.  ECOOP 2003 – Object-Oriented Programming , 2003, Lecture Notes in Computer Science.

[26]  Erik,et al.  Programming with Circles , Triangles and Rectangles , 2003 .

[27]  Makoto Murata,et al.  Boolean operations and inclusion test for attribute-element constraints , 2006, Theor. Comput. Sci..

[28]  Benjamin C. Pierce,et al.  The XTATIC Experience , 2004 .

[29]  Janis Voigtländer,et al.  Concatenate, reverse and map vanish for free , 2002, ICFP '02.

[30]  Christian Kirkegaard,et al.  Static analysis of XML transformations in Java , 2003, IEEE Transactions on Software Engineering.

[31]  John Hughes,et al.  A Novel Representation of Lists and its Application to the Function "reverse" , 1986, Inf. Process. Lett..

[32]  Rajesh Bordawekar,et al.  XJ: integration of XML processing into java , 2004, WWW Alt. '04.

[33]  Michael Y. Levin Compiling regular patterns , 2003, ICFP '03.

[34]  Dan Suciu,et al.  Database and XML Technologies , 2004, Lecture Notes in Computer Science.

[35]  Martin Kempa On XML Objects , 2002 .