Fixing some space leaks with a garbage collector
Software—Practice & Experience
Extended path expressions of XML
PODS '01 Proceedings of the twentieth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
A Better XML Parser through Functional Programming
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Efficient Filtering of XML Documents for Selective Dissemination of Information
VLDB '00 Proceedings of the 26th International Conference on Very Large Data Bases
XDuce: A statically typed XML processing language
ACM Transactions on Internet Technology (TOIT)
Stream processing of XPath queries with predicates
Proceedings of the 2003 ACM SIGMOD international conference on Management of data
CDuce: an XML-centric general-purpose language
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Regular expression pattern matching for XML
Journal of Functional Programming
Information Processing Letters
Fusion with stacks and accumulating parameters
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Processing XML streams with deterministic automata and stream indexes
ACM Transactions on Database Systems (TODS)
XML stream transformer generation through program composition and dependency analysis
Science of Computer Programming
XML type checking with macro tree transducers
Proceedings of the twenty-fourth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
A transducer-based XML query processor
VLDB '02 Proceedings of the 28th international conference on Very Large Data Bases
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
Journal of Functional Programming
Towards practical typechecking for macro tree transducers
DBPL'07 Proceedings of the 11th international conference on Database programming languages
Hi-index | 0.00 |
XML transformations are most naturally defined as recursive functions on trees. A naive implementation, however, would load the entire input XML tree into memory before processing. In contrast, programs in stream processing style minimise memory usage since it may release the memory occupied by the processed prefix of the input, but they are harder to write because the programmer is left with the burden to maintain a state. In this paper, we propose a model for XML stream processing and show that all programs written in a particular style of recursive functions on XML trees, the macro forest transducer, can be automatically translated to our stream processors. The stream processor is declarative in style, but can be implemented efficiently by a pushdown machine. We thus get the best of both worlds — program clarity, and efficiency in execution.