The following XSP snippet will cause an ArrayIndexOutOfBoundsException in Cocoon 2.0.3 because the start of the outer element is never emitted to the SAX stream.
XSP Snippet: <xsp:page ....> <page> <xsp:logic> if (!request.isUserInRole("root")) { <xsp:attribute name="security-error">Not authorized</xsp:attribute> } else { </xsp:logic <!-- Build the page if authorized --> <content /> <xsp:logic> } </xsp:logic> </page> </xsp:page> Generated Java code: if (!request.isUserInRole("root")) { xspAttr.addAttribute("", "security-error", "security-error", "CDATA", "Not authorized"); } else { this.contentHandler.startElement("", "page", "page", xspAttr); xspAttr.clear(); } this.contentHandler.endElement("", "page", "page"); The culprit is the <xsp:attribute>. If I comment it out, the error doesn't happen. E.g. the start code for <page> isn't emitted. And I can't find a workaround: neither emitting characters or another element inside the 'if' makes it emit. Note: in xsp.xsl, the topmost non-xsp element is handled specially but this error still occurs if you nest like this: <page> <foo> <xsp:logic>if (...) { <xsp:attribute...> } else { </xsp:logic> ... <xsp:logic> } </xsp:logic> </foo> </page> Per --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]