[
Lists Home |
Date Index |
Thread Index
]
Hi,
IMHO, a nice or decent XSLT/XQuery processing engine for XML
streaming processing should be able to get the evaluation plan in which
minimal memory bufffers are required. Some XSLT/XQuery programs
are purely streamable, then no extra memory is needed.
A possible approach is as follows. Inside the engine, the input XSLT
or XQuery programs are translated into a program utilizing SAX apis.
Thus, there are some optimization opportunities here. Our goal is
to compose an efficient target program as much as possible.
1. No schema is available.
A proper program can be obtained which uses as little memory as possible.
2. With schema.
With schema information of the XML documents to be processed, the target
program can be improved.
3. With schema and more semantic constraints, such as key or keyref, uniquesness.
With more constraints information, the target program can be improved more.
Given an XSLT or XQuery program, and the schema information or constraints,
a smart developer can write a Java or C program which uses as little memory as
possible. But can that be generalized? In other words, are there algorithms which
take XSLT/XQuery programs and schema as input, and generate the optimal
evaluation plan, since both are Turing-complete?
Sorry for that, I have to admit that I did not grasp Turing-complete like concepts
very well.
Can we translate XSLT program, which essentially operate on tree model, into
operations on sequence or streaming model? That is the key issue.
best regards,
Zhimao Guo
|