xsl-list
[Top] [All Lists]

RE: Error: when distance between section definitions exceed 3678 (roughly)

2005-12-14 08:21:26
got a copy of saxon 8.6.1 (open source version) and it
did not handle this, same error.

--- Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:

Your stylesheet makes one call on
xsl:apply-templates for each sibling. When
there are 3678 siblings there are going to be 3678
nested apply-templates
calls. Many processors under such conditions will
run out of stack space. 

Your apply-templates calls are the last thing each
template does, so they
are amenable to an optimization technique called
tail-call-optimization. I
would have expected Saxon 6.5.x to apply this
technique, but it's a long
time ago so I can't be sure. Certainly Saxon 8.x
should handle it. However,
if you are determined to use MSXML for a problem
that it can't handle, then
I can't help you.

The following tests are wrong:

<xsl:if test=".!=contains(.,$SSDD_START)">
    <xsl:if test=".=starts-with(.,$REQ_START)

You're comparing a singleton node-set to a boolean,
which will always be
true. I don't know whether fixing that will help
you.

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: geoff hopkins
[mailto:geoffhopkins123(_at_)yahoo(_dot_)com] 
Sent: 30 November 2005 14:43
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Error: when distance between
section 
definitions exceed 3678 (roughly)

The basic premise of the xsl below is to define
sections that fall between two marker points
'Application Software Requirements and 'Service
Function Requirements' .  The problem I have is if
these two marker points have roughly 3678 (or
more)
other nodes between then

i.e.

1. <root>
2. <text>'Application Software Requirements</text>
3. <text></text>
..
..
3685. <text>Service Function Requirements</text>
3686. <text></text>
</root>

I get this error message (MSXML4.0)
Code: 0x80004005
The XSL Processor stack has overflowed - probable
cause is infinite template recursion.
I get this error message (Saxon 6.5.3)
An exception of type
'java/lang/StackOverflowError'
was not handled

Unfortunately I am tied into MSXML for this
project,
any ideas why this is happening? do I need to
redefine
my xsl, if yes will need a good guide as I am
quite
rubbish at it.

Regards,

Geoff

p.s. can't supply the source xml as it contains
sensitive data.

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="SSDD_START">Application
Software
Requirements</xsl:variable>
<xsl:variable name="SSDD_STOP">Service Function
Requirements</xsl:variable>
<xsl:variable name="REQ_START">R[</xsl:variable>
<xsl:variable name="REQ_STOP">]</xsl:variable>

<xsl:param name="DOC_REF"/>

<xsl:template match="pdf2xml">
    <root>
            <artefact doc_ref="{$DOC_REF}">
                    <xsl:apply-templates select="text[1]"/>
            </artefact>
    </root>
</xsl:template>

<xsl:template match="text">
<xsl:if test=".!=contains(.,$SSDD_START)">
    <xsl:if test=".=starts-with(.,$REQ_START) and
substring(.,string-length(.),1)=$REQ_STOP">
            <instance type_id="1">
                    <xsl:attribute name="doc">
                            <xsl:value-of select="$DOC_REF"/>
                    </xsl:attribute>
                    <xsl:attribute name="sec">
                            <xsl:value-of select="."/>
                    </xsl:attribute>
            </instance>
    </xsl:if>
</xsl:if>
    <xsl:apply-templates
select="following-sibling::text[1]"/>
</xsl:template>

<xsl:template match="text[contains(.,'Service
Function
Requirements')]">
    <xsl:apply-templates


select="following-sibling::text[contains(.,$SSDD_START)][1]"/>
</xsl:template>

<xsl:template match="text[1]">
    <xsl:apply-templates


select="following-sibling::text[contains(.,$SSDD_START)][1]"/>
</xsl:template>

</xsl:stylesheet>


    
            
__________________________________ 
Yahoo! Mail - PC Magazine Editors' Choice 2005 
http://mail.yahoo.com



--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--






--~------------------------------------------------------------------
XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to:
http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--