模式感知和流式传输

Schema-awareness and streaming

我正在将模式感知样式表转换为流式 XSLT3。令我惊喜的一件事是,流媒体和模式意识似乎可以协同工作。例如,我可以对接地节点(甚至模板匹配规则)进行 instance of 检查并获得正确的结果。不太清楚的是如何发生这种情况。文件运行是否经过多次遍历?另外,我注意到我可以对捕获的累加器执行 id()idref() 操作(非常好),但不清楚为什么(我没有复制文档节点)。

“instance of”测试是临时的:它正在测试节点的类型注释,前提是它会被证明是有效的。如果结果证明它无效,您的代码将在适当的时候中止,因为验证错误是致命的。这就是为什么 try/catch on validation 只能在整个 validation episode 级别捕获错误,它无法在 finer-grained 级别恢复。

我不确定 off-hand id() 和 idref() 测试,但我怀疑这是因为捕获的累加器有效地拍摄了流式节点的 snapshot(),并且快照是植根于文档节点。据推测,idref() 仅在引用位于快照内时才有效。