思路现在就是一团浆子,需要整理一下了。
先罗列关键字吧。XQuery标准,XPATH,Saxon源代码,编译原理,JAXP,SAX,VTD-XML,设计模式。
现在再看Saxon的源代码,也跟踪了代码的运行,基本上实际进行操作的就是expression.process()这个代码,是虚函数,又具体的类来具体执行。
现在感觉乱,就是XQuery的数据模型在Saxon的实现部分。而且Saxon使用Jaxp实现的,还需要理解Jaxp。Saxon实现使用了很多设计模式。
编译原理讲在Parse阶段后,有一个语法树,然后根据语法树,生成中间代码,在翻译为机器代码
对XQuery来说,语法树的结构,也许就是Saxon对应的树结构?还是XML的树结构?这个需要确认,然后具体执行,好像Saxon实现的时候是在某种中间结果的基础上,直接运行输出结果,这个过程我还没有观察到,需要认真的debug,观察。
优化的过程,应该在执行之前,但是现在有一个顾虑,在于Saxon的结构,是不是不适于进行优化,或者在特别深入某种结构。其实不应该,它的商业版本,是实现了优化策略的。
先罗列关键字吧。XQuery标准,XPATH,Saxon源代码,编译原理,JAXP,SAX,VTD-XML,设计模式。
现在再看Saxon的源代码,也跟踪了代码的运行,基本上实际进行操作的就是expression.process()这个代码,是虚函数,又具体的类来具体执行。
现在感觉乱,就是XQuery的数据模型在Saxon的实现部分。而且Saxon使用Jaxp实现的,还需要理解Jaxp。Saxon实现使用了很多设计模式。
编译原理讲在Parse阶段后,有一个语法树,然后根据语法树,生成中间代码,在翻译为机器代码
对XQuery来说,语法树的结构,也许就是Saxon对应的树结构?还是XML的树结构?这个需要确认,然后具体执行,好像Saxon实现的时候是在某种中间结果的基础上,直接运行输出结果,这个过程我还没有观察到,需要认真的debug,观察。
优化的过程,应该在执行之前,但是现在有一个顾虑,在于Saxon的结构,是不是不适于进行优化,或者在特别深入某种结构。其实不应该,它的商业版本,是实现了优化策略的。