[Top] [All Lists]

Re: [xsl] Suggestion for handling an endless loop

2019-10-18 18:09:23
You're in oXygen though, aren't you? I think oXygen chooses a different XSLT 
processor based on the version attribute you specify.

With this kind of thing the devil is always in the detail. I've seen similar 
problems, for example, because a stylesheet did

<xsl:if test="contains(//title, 'xxx')">....

In 1.0 that ignores any title after the first; in 2.0 it has to search the 
whole document so it can report an error if there is more than one title. If 
that's done within a loop and it's a large document then the effect can be 
dramatic. But that's just an anecdote about the sort of thing that can happen; 
there are 100 other possible explanations and you can't diagnose this kind of 
thing without detailed probing.

Comparing the -T output of the two runs might yield interesting insights.

Michael Kay

On 18 Oct 2019, at 23:35, Mark Giffin m1879(_at_)earthlink(_dot_)net 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

Text change in stylesheet only, so I changed this:

<xsl:stylesheet version="2.0">

to this:

<xsl:stylesheet version="1.0">

That's the entire fix. I did not change XSLT processors or any other code.

On 10/18/2019 2:54 PM, Michael Kay mike(_at_)saxonica(_dot_)com 
<mailto:mike(_at_)saxonica(_dot_)com> wrote:
When you say you "change it to 1.0", do you mean that you change the version 
number in the xsl:stylesheet element, or that you change the XSLT processor 
you are using, or both?

Michael Kay

On 18 Oct 2019, at 22:06, Mark Giffin m1879(_at_)earthlink(_dot_)net 
<mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> wrote:

I'm getting what appears to be an endless loop while running XSLT 2.0. It 
hangs when transforming a certain XML file, and I can watch the memory 
consumption rise to as much as 9 GB, and it apparently will never end. I 
have to force it to stop. When I change it back to XSLT 1.0, it runs fine, 
and when it hits the same file it hung up on with 2.0, it transforms in a 
second or two with 1.0. The XSLT does not use any 2.0 capabilities yet. The 
only change is changing 2.0 to 1.0 in <xsl:stylesheet version="2.0">.

I'm interested in methods to debug something like this. Where to look? I 
notice Oxygen has an XSLT profiler.

The XSLT is running under the DITA Open Toolkit version 3.3.2 (late model). 
I am converting an HTML-based publishing output from a much older version 
of the DITA OT, 1.8.5 (where the code worked). It looks like the 3.3.2 OT 
uses Saxon-HE-9.8.0-14.jar.


XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/805141> (by 
email <applewebdata://39E5C53D-DB28-4327-8564-0CC9B58E6904>)

XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by 
email <>)
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
<Prev in Thread] Current Thread [Next in Thread>