我正在寻找解决XSLT处理问题的方法。
是否可以使用并行处理来加快XSLT处理器的速度?还是XSLT处理器天生就是串行的?
我的直觉是,可以将XML划分为多个块,这些块可以由不同的线程处理,但是由于我并没有真正找到这种壮举的任何文档,因此我对此表示怀疑。可以使用StAX并发地分块XML吗?
似乎大多数XSLT处理器都是用Java或C/C++实现的,但是我确实没有目标语言。我只想知道多线程XSLT处理器是否可行。
你的想法是什么?
最佳答案
就像大多数编程语言一样,只要遵循一些规则,循环就可以并行化,这就是所谓的数据并行性
任何循环构造都可以在XSLT中很容易地并行化。
使用类似的规则来防止变异和依赖性,您实际上可以将XSLT转换中的大多数并行化为一种基于任务的并行性。
首先,将整个文档分成多个任务,在XSLT命令和文本节点边界处进行分段;应该根据任务在文档中的位置(从上到下)为每个任务分配一个顺序索引。
接下来,将任务分散到不同的XSLT处理功能中,每个功能在不同的线程上运行;这些处理器都需要使用相同的全局状态(变量,常量等)进行初始化。
最后,一旦所有转换完成,控制线程应按索引顺序收集结果(转换后的字符串),并将其组装到完成的文档中。
关于multithreading - XSLT处理器可以是多线程的吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1713697/