Re: [xsl] Recursive entity reference "%ISOamsa" error

Subject: Re: [xsl] Recursive entity reference "%ISOamsa" error
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Thu, 13 Jul 2006 15:49:04 -0400
Mark,

Does your XML document contain a DOCTYPE declaration with a SYSTEM or PUBLIC identifier?

This would refer to an external DTD subset, and your problem could be there.

It's certainly a problem in the declarations in some DTD somewhere.

Often these public entity sets include comments explaining how to invoke them. It could be that in the ISOamsa file being called in, the commenting markup has gotten lost somewhere, which would result in the entity trying to invoke itself.

Strictly speaking, this is a parsing problem not an XSLT problem. No XML parser should work on a file with declarations like that.

Cheers,
Wendell

At 02:31 PM 7/13/2006, you wrote:
Hi All,

I'm encountering the error "Recursive entity reference "%ISOamsa" when
I apply a stylesheet to my XML file to simply copy all the nodes and
attributes to another document.

The complete error:

ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN//XML; Line #55;
Column #10; XSLT Error (javax.xml.transform.TransformerException): Recursive ent
ity reference "%ISOamsa". (Reference path: %ISOamsa -> %ISOamsa -> %ISOamsa),
Exception in thread "main" java.lang.RuntimeException: Recursive entity referenc
e "%ISOamsa". (Reference path: %ISOamsa -> %ISOamsa -> %ISOamsa),
at org.apache.xalan.xslt.Process.doExit(Process.java:1153)
at org.apache.xalan.xslt.Process.main(Process.java:1126)



My XSL:


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:output method="xml" version="1.0"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>



The information I found indicates that the replacement text for an entity cannot reference *another* entity:

"One word of warning: you cannot reference an entity within its
replacement text as this will create a recursive loop. For this
reason, the replacement string cannot contain any characters that
might be treated as short references which should be mapped to the
entity being defined."

However, my XML document (which is too large to paste here) doesn't
seem to include anything but simple entities. I don't have any
declared entities, and the only other character entities included are
as follows:

&trade (trademark)
&reg; (registered trademark)
&sol; (forward slash)
&ast; (asterisk)
&lowbar; (underscore)
&lt; (less than)
&gt; (greater than)
&boxv; (vertical line)
&mdash; (em-dash)
&lsquo; (left single quote)
&rsquo; (right single quote)
&ldquo; (left double quote)
&rdquo; (right double quote)
&equals (equals)

Can anyone think of another reason for the error?

Thanks in advance.

Current Thread