Project

Profile

Help

Bug #4346

closed

Streamed optimization of xsl:copy doesn't converge

Added by Michael Kay over 4 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Low
Assignee:
Category:
Streaming
Sprint/Milestone:
-
Start date:
2019-10-18
Due date:
% Done:

0%

Estimated time:
Legacy ID:
Applies to branch:
9.9, trunk
Fix Committed on Branch:
9.9, trunk
Fixed in Maintenance Release:
Platforms:

Description

Given a streamed xsl:copy instruction where the node kind that it applies to can't be determined statically, the expression is split into two:

if (kind = (attribute, namespace, text, comment, pi))
  then copy-of(.)
  else copy(....)

But typically the result goes through the optimizer more than once, and on the second pass through it becomes:

if (kind = (attribute, namespace, text, comment, pi))
  then copy-of(.)
  else if (kind = (attribute, namespace, text, comment, pi))
  then copy-of(.)
  else copy(....)

with the number of branches in the conditional increasing on each pass through the optimizer.

Seen in test case si-apply-templates-010.

Please register to edit this issue

Also available in: Atom PDF