Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
API-based XML streaming with FLWOR power and functional updates
[go: Go Back, main page]

API-based XML streaming with FLWOR power and functional updates

Author(s)
Ralf Lämmel

Abstract
The size of XML trees that can be processed by an XML API for declarative, in-memory processing is bound by the available memory. As a result, certain scenarios involving huge trees or many processes on large trees may fail to be feasible with (declarative) in-memory processing; lower-level APIs for XML parsing and unparsing must be reconsidered. As a remedy, we enable streaming for an in-memory XML API so that the convenient (declarative) programming model of the baseline API is preserved. Some restrictions are to be imposed on the streaming mode of the API, thereby achieving also predictability and controllability of the streaming power. The presented development uses LINQ to XML (formerly called XLinq) as the baseline API and works out one particular API extension for a streaming-enabled LINQ to XML API. As an important byproduct of this effort, functional updates are proposed, which complement the existing, imperative updates of the LINQ to XML API.

Acknowledgment
I have been participating in the LINQ to XML working group over the last 18 months, which has been incredibly interesting for me. I have learned a lot about XML processing and API design from other working group members: Michael Champion, Anders Hejlsberg, Andrew Kimball, Dave Remy and Ion Vasilian. In fact, these individuals deserve a good part of the credit for what I am describing in the paper, while all weaknesses are in my responsibility. This paper does not represent consensus of the working group.

Resources

Bibtex entry
@inproceedings{api-streaming-xml,
 author      = "Ralf L{\"a}mmel",
 title       = "{API-based XML streaming with FLWOR power and functional updates}",
 booktitle   = "{Conference Proceedings XML 2006}",
 year        = 2006,
 month       = dec,
 note        = "16 pages"
}

maintained by Ralf Lämmel (Email: Ralf.Lammel@microsoft.com)