问题描述
我正在将可识别模式的样式表转换为流XSLT3。让我感到惊喜的是,似乎流和模式感知可以一起工作。例如,我可以对接地的节点(甚至模板匹配规则)进行instance of
检查,并获得正确的结果。不太清楚的是如何。文档是否经过多次通过?另外,我注意到我可以在捕获的累加器上执行id()
和idref()
操作(这是一件好事),但不清楚原因(我不复制文档节点)。>
解决方法
“ instance of”测试是临时的:它在假设节点将成为有效的前提下对其进行测试。如果结果无效,则由于验证错误是致命的,您的代码将在适当时候中止。这就是为什么try / catch onvalidation只能在整个验证事件级别上捕获错误,而不能在更细粒度的级别上进行恢复。
我不确定是否要使用id()和idref()测试,但是我怀疑这是因为捕获的累加器有效地获取了流节点的snapshot(),并且快照植根于文档中节点。大概idref()仅在引用在快照内时才起作用。