Bug #3211
Updated by Michael Kay almost 5 years ago
Some combination of nesting and non-capturing groups is the cause. Test case attached -- just run it with empty input. The 7th branch is the problem, simplifying it in a variety of ways makes the problem go away. For testing purposes, you can pass in simplified patterns and/or formulae from the command line, so e.g. this, with one fewer non-capturing group, works: ~~~ > saxon97 test.xsl pat='("[^"]*")|(\{[^}]+})|(,)|([^=\-+*/();:,.$<>^!]+(?:\.[^=\-+*/();:,.$<>^!]+)*\()|([)])|(^=|\()|((?:(?:'\''[^'\'']+'\'')))|(\$?[A-Z]+\$?[0-9]+)|([a-zA-Z_\\][a-zA-Z0-9._]*)|(.)' ~~~