bundles/org.apache.jasper.glassfish/src/org/apache/jasper/compiler/Parser.java
private void parseXMLDeclaration(Node parent) throws JasperException {
        reader.skipSpaces();
        if( !reader.matches( "/>" ) ) {
            if( !reader.matches( ">" ) ) {
                err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
            }
	    Mark stop;
            String text;
            while (true) {
                start = reader.mark();
                stop = reader.skipUntil("<");
                if (stop == null) {
                    err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
                }
		text = parseScriptText(reader.getText(start, stop));
                new Node.Declaration(text, start, parent);
                if (reader.matches("![CDATA[")) {
                    start = reader.mark();
                    stop = reader.skipUntil("]]>");
                    if (stop == null) {
                        err.jspError(start, "jsp.error.unterminated", "CDATA");
                    }
		    text = parseScriptText(reader.getText(start, stop));
                    new Node.Declaration(text, start, parent);
                }
                else {
                    break;
                }
	    }
		
            if (!reader.matchesETagWithoutLessThan( "jsp:declaration" ) ) {
                err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
            }
        }
    }
private void parseXMLDeclaration(Node parent) throws JasperException {
        reader.skipSpaces();
        if( !reader.matches( "/>" ) ) {
            if( !reader.matches( ">" ) ) {
                err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
            }
	    Mark stop;
            String text;
            while (true) {
                start = reader.mark();
                stop = reader.skipUntil("<");
                if (stop == null) {
                    err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
                }
		text = parseScriptText(reader.getText(start, stop));
                new Node.Declaration(text, start, parent);
                if (reader.matches("![CDATA[")) {
                    start = reader.mark();
                    stop = reader.skipUntil("]]>");
                    if (stop == null) {
                        err.jspError(start, "jsp.error.unterminated", "CDATA");
                    }
		    text = parseScriptText(reader.getText(start, stop));
                    new Node.Declaration(text, start, parent);
                }
                else {
                    break;
                }
	    }
		
            if (!reader.matchesETagWithoutLessThan( "jsp:declaration" ) ) {
                err.jspError(start, "jsp.error.unterminated",
                        "&lt;jsp:declaration&gt;");
            }
        }
    }
private void parseXMLDeclaration ( Node parent ) throws JasperException { reader . skipSpaces ( ) ; if ( ! reader . matches ( "/>" ) ) { if ( ! reader . matches ( ">" ) ) { err . jspError ( start , "jsp.error.unterminated" , "&lt;jsp:declaration&gt;" ) ; } Mark stop ; String text ; while ( true ) { start = reader . mark ( ) ; stop = reader . skipUntil ( "<" ) ; if ( stop == null ) { err . jspError ( start , "jsp.error.unterminated" , "&lt;jsp:declaration&gt;" ) ; } text = parseScriptText ( reader . getText ( start , stop ) ) ; new Node . Declaration ( text , start , parent ) ; if ( reader . matches ( "![CDATA[" ) ) { start = reader . mark ( ) ; stop = reader . skipUntil ( "]]>" ) ; if ( stop == null ) { err . jspError ( start , "jsp.error.unterminated" , "CDATA" ) ; } text = parseScriptText ( reader . getText ( start , stop ) ) ; new Node . Declaration ( text , start , parent ) ; } else { break ; } } if ( ! reader . matchesETagWithoutLessThan ( "jsp:declaration" ) ) { err . jspError ( start , "jsp.error.unterminated" , "&lt;jsp:declaration&gt;" ) ; } } }
/*
XMLDeclarationBody ::=   ( S? '/>' )
| ( S? '>' (Char* - (char* '<')) CDSect?)* ETag
| <TRANSLATION_ERROR>
CDSect ::= CDStart CData CDEnd
CDStart ::= '<![CDATA['
CData ::= (Char* - (Char* ']]>' Char*))
CDEnd ::= ']]>'
/ * XMLDeclarationBody :: = ( S? / > ) | ( S? > ( Char * - ( char * < )) CDSect? ) * ETag | <TRANSLATION_ERROR > CDSect :: = CDStart CData CDEnd CDStart :: = <! [ CDATA [ CData :: = ( Char * - ( Char * ]] > Char * )) CDEnd :: = ]] >