You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pi...@locus.apache.org on 2000/10/04 07:11:02 UTC

cvs commit: jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources web-jsptaglib_1_2.dtd web_22.dtd web_23.dtd messages.properties messages_es.properties

pierred     00/10/03 22:11:00

  Modified:    jasper/src/share/org/apache/jasper Constants.java
               jasper/src/share/org/apache/jasper/compiler
                        JspParseEventListener.java JspUtil.java
                        TagLibraryInfoImpl.java
               jasper/src/share/org/apache/jasper/resources
                        messages.properties messages_es.properties
  Added:       jasper/src/share/org/apache/jasper/resources
                        web-jsptaglib_1_2.dtd web_22.dtd web_23.dtd
  Log:
  Validation errors on TLDs and web.xml were ignored because an
  ErrorHandler was not used. This came up when trying to use
  JAXP1.1EA whose default behavior is to throw exceptions both
  for fatal errors and errors (other parsers fail silently
  on errors if no ErrorHandler is setup).
  
  Took the opportunity to cleanup how we handle the cached
  DTDs, as well as try to provide meaningful error messages
  as much as possible when exceptions are thrown.
  
  Constants
  
  - All versions of DTD's for taglibs and web deployment descriptors
    are now properly supported.
  
  compiler.JspUtil
  
  - An ErrorHandler is now associated with the validating parser
    so that errors are properly handled (and not ignored as they
    were before).
  - Unique copy of entity resolver may now be shared for all calls
    to parseXmlDoc().
  - EntityResolver now handles all cached DTD's for the various
    versions of the deployment descriptor and the taglib descriptor.
  - Improved messages for exceptions thrown
  - Commented out the FIXME part which said that it should be
    removed...
  
  compiler.TagLibraryInfoImpl
  
  - JspUtil:parseXmlDoc() now called with its new signature
  - Improved messages for exceptions thrown
  
  compiler.JspParseEventListener
  
  - Do not re-wrap the exception thrown at lower levels. We lose the
    root cause of the exception by doing that.
  
  resources.messages.properties
  resources.messages_es.properties
  
  - New messages:
      jsp.error.parse.xml
      jsp.error.parse.xml.line
      jsp.error.internal.filenotfound
      jsp.error.parse.xml.invalidPublicId
  
  removed file
    - resources/web.dtd
  
  new files
    - resources/web_22.dtd
    - resources/web_23.dtd
    - resources/web-jsptaglib_1_2.dtd
  
  Revision  Changes    Path
  1.4       +39 -10    jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/Constants.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Constants.java	2000/09/19 19:40:49	1.3
  +++ Constants.java	2000/10/04 05:10:45	1.4
  @@ -154,20 +154,49 @@
       public static final String JSP_TOKEN = "_jsp_";
   
       /**
  -     * ID and location of the DTD for tag library descriptors. 
  +     * Public Id and the Resource path (of the cached copy) 
  +     * of the DTDs for tag library descriptors. 
        */
  -    public static final String 
  -        TAGLIB_DTD_PUBLIC_ID = "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN";
  -    public static final String
  -        TAGLIB_DTD_RESOURCE = "/org/apache/jasper/resources/web-jsptaglib_1_1.dtd";
  +    public static final String TAGLIB_DTD_PUBLIC_ID_11 = 
  +	"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN";
  +    public static final String TAGLIB_DTD_RESOURCE_PATH_11 = 
  +	"/org/apache/jasper/resources/web-jsptaglib_1_1.dtd";
  +    public static final String TAGLIB_DTD_PUBLIC_ID_12 = 
  +	"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN";
  +    public static final String TAGLIB_DTD_RESOURCE_PATH_12 = 
  +	"/org/apache/jasper/resources/web-jsptaglib_1_2.dtd";
   
       /**
  -     * ID and location of the DTD for web-app deployment descriptors. 
  +     * Public Id and the Resource path (of the cached copy) 
  +     * of the DTDs for web application deployment descriptors
        */
  -    public static final String 
  -        WEBAPP_DTD_PUBLIC_ID = "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN";
  -    public static final String
  -        WEBAPP_DTD_RESOURCE = "/org/apache/jasper/resources/web.dtd";
  +    public static final String WEBAPP_DTD_PUBLIC_ID_22 = 
  +	"-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN";
  +    public static final String WEBAPP_DTD_RESOURCE_PATH_22 = 
  +	"/org/apache/jasper/resources/web_22.dtd";
  +    public static final String WEBAPP_DTD_PUBLIC_ID_23 = 
  +	"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN";
  +    public static final String WEBAPP_DTD_RESOURCE_PATH_23 = 
  +	"/org/apache/jasper/resources/web_23.dtd";
  +
  +    /**
  +     * List of the Public IDs that we cache, and their
  +     * associated location. This is used by 
  +     * an EntityResolver to return the location of the
  +     * cached copy of a DTD.
  +     */
  +    public static final String[] CACHED_DTD_PUBLIC_IDS = {
  +	TAGLIB_DTD_PUBLIC_ID_11,
  +	TAGLIB_DTD_PUBLIC_ID_12,
  +	WEBAPP_DTD_PUBLIC_ID_22,
  +	WEBAPP_DTD_PUBLIC_ID_23,
  +    };
  +    public static final String[] CACHED_DTD_RESOURCE_PATHS = {
  +	TAGLIB_DTD_RESOURCE_PATH_11,
  +	TAGLIB_DTD_RESOURCE_PATH_12,
  +	WEBAPP_DTD_RESOURCE_PATH_22,
  +	WEBAPP_DTD_RESOURCE_PATH_23,
  +    };
       
       /**
        * Default URLs to download the pluging for Netscape and IE.
  
  
  
  1.3       +6 -13     jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java
  
  Index: JspParseEventListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- JspParseEventListener.java	2000/09/19 19:26:03	1.2
  +++ JspParseEventListener.java	2000/10/04 05:10:50	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.2 2000/09/19 19:26:03 pierred Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/09/19 19:26:03 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspParseEventListener.java,v 1.3 2000/10/04 05:10:50 pierred Exp $
  + * $Revision: 1.3 $
  + * $Date: 2000/10/04 05:10:50 $
    *
    * ====================================================================
    *
  @@ -713,16 +713,9 @@
   	if (directive.equals("taglib")) {
               String uri = (String) attrs.get("uri");
               String prefix = (String) attrs.get("prefix");
  -            try {
  -                TagLibraryInfo tl = new TagLibraryInfoImpl(ctxt,
  -                                                               prefix,
  -                                                               uri);
  -                libraries.addTagLibrary(prefix, tl);
  -            } catch (Exception ex) {
  -                Object[] args = new Object[] { uri, ex.getMessage() };
  -                throw new CompileException(start, Constants.getString("jsp.error.badtaglib",
  -                                                              args));
  -            }
  +	    TagLibraryInfo tl = 
  +		new TagLibraryInfoImpl(ctxt, prefix, uri);
  +	    libraries.addTagLibrary(prefix, tl);
   	}
   
   	if (directive.equals("include")) {
  
  
  
  1.4       +84 -63    jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java
  
  Index: JspUtil.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JspUtil.java	2000/09/29 06:06:38	1.3
  +++ JspUtil.java	2000/10/04 05:10:50	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.3 2000/09/29 06:06:38 shemnon Exp $
  - * $Revision: 1.3 $
  - * $Date: 2000/09/29 06:06:38 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/JspUtil.java,v 1.4 2000/10/04 05:10:50 pierred Exp $
  + * $Revision: 1.4 $
  + * $Date: 2000/10/04 05:10:50 $
    *
    * ====================================================================
    * 
  @@ -78,7 +78,9 @@
   import javax.xml.parsers.DocumentBuilderFactory;
   import javax.xml.parsers.ParserConfigurationException;
   import org.xml.sax.EntityResolver;
  +import org.xml.sax.ErrorHandler;
   import org.xml.sax.SAXException;
  +import org.xml.sax.SAXParseException;
   import org.xml.sax.InputSource;
   
   /** 
  @@ -93,6 +95,9 @@
       private static final String OPEN_EXPR  = "<%=";
       private static final String CLOSE_EXPR = "%>";
   
  +    private static ErrorHandler errorHandler = new MyErrorHandler();
  +    private static EntityResolver entityResolver = new MyEntityResolver();
  +
       public static char[] removeQuotes(char []chars) {
   	CharArrayWriter caw = new CharArrayWriter();
   	for (int i = 0; i < chars.length; i++) {
  @@ -148,53 +153,53 @@
           return returnString;
       }
   
  -    // Parses the XML document contained in the InputStream.
  -    public static Document parseXMLDoc(InputStream in, String dtdResource, 
  -    					  String dtdId) throws JasperException 
  +    /**
  +     * Parses the XML document contained in the InputStream.
  +     */
  +    public static Document parseXMLDoc(String uri, InputStream in) 
  +	throws JasperException 
       {
  -	return parseXMLDocJaxp(in, dtdResource, dtdId );
  +	return parseXMLDocJaxp(uri, in);
       }
   
  -    // Parses the XML document contained in the InputStream.
  -    public static Document parseXMLDocJaxp(InputStream in, String dtdResource, 
  -					   String dtdId)
  +    /**
  +     * Parses the XML document contained in the InputStream.
  +     * This XML document is either web.xml or a tld.
  +     * [The TLD has to be cached internally (see MyEntityResolver)]
  +     */
  +    public static Document parseXMLDocJaxp(String uri, InputStream in)
   	throws JasperException
       {
   	try {
  -	    Document tld;
  -	    DocumentBuilderFactory docFactory = DocumentBuilderFactory.
  -		newInstance();
  +	    Document doc;
  +	    DocumentBuilderFactory docFactory = 
  +		DocumentBuilderFactory.newInstance();
   	    docFactory.setValidating(true);
   	    docFactory.setNamespaceAware(true);
   	    DocumentBuilder builder = docFactory.newDocumentBuilder();
  -	    
  -	    /***
  -	     * These lines make sure that we have an internal catalog entry for
  -	     * the taglib.dtdfile; this is so that jasper can run standalone 
  -	     * without running out to the net to pick up the taglib.dtd file.
  -	     */
  -	    MyEntityResolver resolver =
  -		new MyEntityResolver(dtdId, dtdResource);
  -	    builder.setEntityResolver(resolver);
  -	    tld = builder.parse(in);
  -	    return tld;
  -	} catch( ParserConfigurationException ex ) {
  -            throw new JasperException(Constants.
  -				      getString("jsp.error.parse.error.in.TLD",
  -						new Object[] {
  -						    ex.getMessage()
  -						}));
  -	} catch ( SAXException sx ) {
  -            throw new JasperException(Constants.
  -				      getString("jsp.error.parse.error.in.TLD",
  -						new Object[] {
  -						    sx.getMessage()
  -						}));
  +	    builder.setEntityResolver(entityResolver);
  +	    builder.setErrorHandler(errorHandler);
  +	    doc = builder.parse(in);
  +	    return doc;
  +	} catch (ParserConfigurationException ex) {
  +            throw new JasperException(
  +	        Constants.getString("jsp.error.parse.xml",
  +				    new Object[]{uri, ex.getMessage()}));
  +	} catch (SAXParseException ex) {
  +            throw new JasperException(
  +	        Constants.getString("jsp.error.parse.xml.line",
  +				    new Object[]{uri,
  +						 new Integer(ex.getLineNumber()),
  +						 new Integer(ex.getColumnNumber()),
  +						 ex.getMessage()}));
  +	} catch (SAXException sx) {
  +            throw new JasperException(
  +                Constants.getString("jsp.error.parse.xml",
  +				    new Object[]{uri, sx.getMessage()}));
           } catch (IOException io) {
  -            throw new JasperException(Constants.
  -				      getString("jsp.error.unable.to.open.TLD",
  -						new Object[] {
  -						    io.getMessage() }));
  +            throw new JasperException(
  +                Constants.getString("jsp.error.parse.xml",
  +				    new Object[]{uri, io.toString()}));
   	}
       }
   
  @@ -322,32 +327,48 @@
   }
   
   class MyEntityResolver implements EntityResolver {
  -
  -    String dtdId;
  -    String dtdResource;
  -    
  -    public MyEntityResolver(String id, String resource) {
  -	this.dtdId = id;
  -	this.dtdResource = resource;
  -    }
  -    
       public InputSource resolveEntity(String publicId, String systemId)
  -	throws SAXException, IOException
  +	throws SAXException
       {
  -	//System.out.println ("publicId = " + publicId);
  -	//System.out.println ("systemId is " + systemId);
  -	//System.out.println ("resource is " + dtdResource);
  -	if (publicId.equals(dtdId)) {
  -	    InputStream input =
  -		this.getClass().getResourceAsStream(dtdResource);
  -	    InputSource isrc =
  -		new InputSource(input);
  -	    return isrc;
  -	}
  -	else {
  -	    //System.out.println ("returning null though dtdURL is " + dtdURL);
  -	    return null;
  +	for (int i=0; i<Constants.CACHED_DTD_PUBLIC_IDS.length; i++) {
  +	    String cachedDtdPublicId = Constants.CACHED_DTD_PUBLIC_IDS[i];
  +	    if (cachedDtdPublicId.equals(publicId)) {
  +		String resourcePath = Constants.CACHED_DTD_RESOURCE_PATHS[i];
  +		InputStream input =
  +		    this.getClass().getResourceAsStream(resourcePath);
  +		if (input == null) {
  +		    throw new SAXException(
  +                        Constants.getString("jsp.error.internal.filenotfound", 
  +					    new Object[]{resourcePath}));
  +		}
  +		InputSource isrc =
  +		    new InputSource(input);
  +		return isrc;
  +	    }
   	}
  +	throw new SAXException(
  +	    Constants.getString("jsp.error.parse.xml.invalidPublicId",
  +				new Object[]{publicId}));
  +    }
  +}
  +
  +class MyErrorHandler implements ErrorHandler {
  +    public void warning(SAXParseException ex)
  +	throws SAXException
  +    {
  +	// We ignore warnings
  +    }
  +
  +    public void error(SAXParseException ex)
  +	throws SAXException
  +    {
  +	throw ex;
  +    }
  +
  +    public void fatalError(SAXParseException ex)
  +	throws SAXException
  +    {
  +	throw ex;
       }
   }
   
  
  
  
  1.3       +39 -36    jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java
  
  Index: TagLibraryInfoImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TagLibraryInfoImpl.java	2000/09/19 19:28:51	1.2
  +++ TagLibraryInfoImpl.java	2000/10/04 05:10:51	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v 1.2 2000/09/19 19:28:51 pierred Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/09/19 19:28:51 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/compiler/TagLibraryInfoImpl.java,v 1.3 2000/10/04 05:10:51 pierred Exp $
  + * $Revision: 1.3 $
  + * $Date: 2000/10/04 05:10:51 $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -100,8 +100,8 @@
    * @author Pierre Delisle
    */
   public class TagLibraryInfoImpl extends TagLibraryInfo {
  -    static private final String TLD = "META-INF/taglib.tld";
  -    static private final String WEBAPP_INF = "/WEB-INF/web.xml";
  +    static private final String TAGLIB_TLD = "META-INF/taglib.tld";
  +    static private final String WEB_XML = "/WEB-INF/web.xml";
   
       Document tld;
   
  @@ -154,7 +154,7 @@
       }
   
       public TagLibraryInfoImpl(JspCompilationContext ctxt, String prefix, String uriIn) 
  -        throws IOException, JasperException
  +        throws JasperException
       {
           super(prefix, uriIn);
   
  @@ -166,13 +166,17 @@
   	this.uri = uriIn;
   
           // Parse web.xml.
  -        InputStream is = getResourceAsStream(WEBAPP_INF);
  -
  +	InputStream is;
  +	try {
  +	    is = getResourceAsStream(WEB_XML);
  +	} catch (FileNotFoundException ex) {
  +	    throw new JasperException(
  +		Constants.getString("jsp.error.internal.file.not.found", 
  +				    new Object[]{WEB_XML}));
  +	}
           if (is != null) {
               Document webtld =
  -                JspUtil.parseXMLDoc(is,
  -                                    Constants.WEBAPP_DTD_RESOURCE,
  -                                    Constants.WEBAPP_DTD_PUBLIC_ID);
  +                JspUtil.parseXMLDoc(WEB_XML, is);
               NodeList nList =  webtld.getElementsByTagName("taglib");
   
               if (nList.getLength() != 0) {
  @@ -227,16 +231,20 @@
   
   
           if (!uri.endsWith("jar")) {
  -	    in = getResourceAsStream(uri);
  -	    
  -	    if (in == null)
  -		throw new JasperException(Constants.getString("jsp.error.tld_not_found",
  -							      new Object[] {TLD}));
  +	    try {
  +		in = getResourceAsStream(uri);
  +		if (in == null) throw new FileNotFoundException(uri);
  +	    } catch (FileNotFoundException ex) {
  +		throw new JasperException(
  +                    Constants.getString("jsp.error.file.not.found",
  +					new Object[] {uri}));
  +	    }
   	    // Now parse the tld.
  -	    parseTLD(in);
  +	    parseTLD(uri, in);
   	}
   	    
   	// FIXME Take this stuff out when taglib changes are thoroughly tested.
  +	/* @@@ taking it out... hopefully the sky won't fall -pierred
   	if (uri.endsWith("jar")) {
   	    
   	    if (!isRelativeURI(uri)) {
  @@ -286,13 +294,11 @@
   	    boolean tldFound = false;
   	    ZipEntry entry;
   	    while ((entry = zin.getNextEntry()) != null) {
  -		if (entry.getName().equals(TLD)) {
  -		    /*******
  -		     * This hack is necessary because XML reads until the end 
  -		     * of an inputstream -- does not use available()
  -		     * -- and closes the inputstream when it can't
  -		     * read no more.
  -		     */
  +		if (entry.getName().equals(TAGLIB_TLD)) {
  +		    // This hack is necessary because XML reads until the end 
  +		    // of an inputstream -- does not use available()
  +		    // -- and closes the inputstream when it can't
  +		    // read no more.
   		    
   		    // BEGIN HACK
   		    ByteArrayOutputStream baos = new ByteArrayOutputStream();
  @@ -309,7 +315,7 @@
   			= new ByteArrayInputStream(baos.toByteArray());
   		    // END HACK
   		    tldFound = true;
  -		    parseTLD(bais);
  +		    parseTLD(TAGLIB_TLD, bais);
   		} else {
   		    ByteArrayOutputStream baos = new ByteArrayOutputStream();
   		    int b;
  @@ -325,13 +331,13 @@
   		zin.closeEntry();
   	    }
   	    
  -	    if (!tldFound)
  -		throw new JasperException(Constants.getString("jsp.error.tld_not_found",
  -							      new Object[] {
  -		    TLD
  -			}
  -							      ));
  +	    if (!tldFound) {
  +		throw new JasperException(
  +                    Constants.getString("jsp.error.tld_not_found",
  +		                        new Object[] {TAGLIB_TLD}));
  +	    }
   	} // Take this out (END of if(endsWith("jar")))
  +        */
       }
       
       /** Returns true if the given URI is relative in this web application, false if it is an internet URI.
  @@ -341,14 +347,11 @@
       }
       
           
  -    private void parseTLD(InputStream in) 
  +    private void parseTLD(String uri, InputStream in) 
           throws JasperException
       {
           String validatorclass = null;
  -	tld = JspUtil.parseXMLDoc(in,
  -				  Constants.TAGLIB_DTD_RESOURCE,
  -				  Constants.TAGLIB_DTD_PUBLIC_ID);
  -	
  +	tld = JspUtil.parseXMLDoc(uri, in);
           Vector tagVector = new Vector();
           NodeList list = tld.getElementsByTagName("taglib");
   
  
  
  
  1.4       +6 -2      jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- messages.properties	2000/09/27 17:15:42	1.3
  +++ messages.properties	2000/10/04 05:10:56	1.4
  @@ -1,4 +1,4 @@
  -# $Id: messages.properties,v 1.3 2000/09/27 17:15:42 pierred Exp $
  +# $Id: messages.properties,v 1.4 2000/10/04 05:10:56 pierred Exp $
   #
   # Default localized string information
   # Localized this the Default Locale as is en_US
  @@ -123,7 +123,7 @@
   jsp.error.parse.error.in.TLD=Parse Error in the tag library descriptor: {0}
   jsp.error.unable.to.open.TLD=Unable to open the tag library descriptor: {0}
   jsp.buffer.size.zero=Buffer size <= 0
  -jsp.error.file.not.found=JSP file \"{0}\" not found
  +jsp.error.file.not.found=File \"{0}\" not found
   jsp.message.copyinguri=Copying {0} into {1}
   jsp.message.htmlcomment=\nStripping Comment: \t{0}
   jsp.message.handling_directive=\nHandling Directive: {0}\t{1}
  @@ -218,3 +218,7 @@
   jsp.parser.sax.featurenotrecognized=SAX feature not recognized: {0}
   jsp.error.no.more.content=End of content reached while more parsing required: tag nesting error?
   jsp.error.incorrect.nesting=Incorrect nesting involving {0}
  +jsp.error.parse.xml=XML parsing error on file {0}: {1}
  +jsp.error.parse.xml.line=XML parsing error on file {0}: (line {1}, col {2}): {3}
  +jsp.error.internal.filenotfound=Internal Error: File {0} not found
  +jsp.error.parse.xml.invalidPublicId=Invalid PUBLIC ID: {0}
  
  
  
  1.4       +5 -1      jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages_es.properties
  
  Index: messages_es.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/messages_es.properties,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- messages_es.properties	2000/09/27 17:15:42	1.3
  +++ messages_es.properties	2000/10/04 05:10:58	1.4
  @@ -1,4 +1,4 @@
  -# $Id: messages_es.properties,v 1.3 2000/09/27 17:15:42 pierred Exp $
  +# $Id: messages_es.properties,v 1.4 2000/10/04 05:10:58 pierred Exp $
   #
   # Default localized string information
   # Localized para Locale es_ES
  @@ -209,3 +209,7 @@
   jsp.parser.sax.featurenotrecognized=
   jsp.error.no.more.content=
   jsp.error.incorrect.nesting=
  +jsp.error.parse.xml=
  +jsp.error.parse.xml.line=
  +jsp.error.internal.filenotfound=
  +jsp.error.parse.xml.invalidPublicId=
  
  
  
  1.1                  jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/web-jsptaglib_1_2.dtd
  
  Index: web-jsptaglib_1_2.dtd
  ===================================================================
  <!-- TEMPORARY DTD FOR THE JSP 1.2 TAG LIBRARY DESCRIPTOR.
       THIS WILL BE REPLACED BY THE OFFICIAL ONE WHEN IT IT
       POSTED.  -->
  
  <!--
  
     This is the DTD defining the JavaServer Pages 1.2 Tag Library
     descriptor (.tld) (XML) file format/syntax.
  
     A Tag Library is a JAR file containing a valid instance of a Tag Library
     Descriptor (taglib.tld) file in the META-INF subdirectory, along with the
     appropriate implementing classes, and other resources required to
     implement the tags defined therein.
  
    -->
  
  <!NOTATION WEB-JSPTAGLIB.1_2 PUBLIC
            "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN">
  
  <!--
  
  	The taglib tag is the document root, it defines:
  
  	tlibversion	the version of the tag library implementation
  
  	jspversion	the version of JSP the tag library depends upon
  
  	shortname	a simple default short name that could be used by
  			a JSP authoring tool to create names with a mnemonic
  			value; for example, the it may be used as the prefered
  			prefix value in taglib directives
  	uri		a uri uniquely identifying this taglib
  
          display-name    the display-name element contains a short name that
                          is intended to be displayed by tools
  
          small-icon      optional small-icon that can be used by tools
  
          large-icon      optional large-icon that can be used by tools
  
  	info		a simple string describing the "use" of this taglib,
  			should be user discernable
  	
          validatorclass  optional TagLibraryValidator class
  
          listener        optional event listener specification
  
    -->
  
  <!ELEMENT taglib (tlibversion, jspversion?, shortname, uri?,
                    display-name?, small-icon?, large-icon?, info?,
                    validatorclass?, listener*, tag+) >
  	<!ATTLIST taglib id	    ID    #IMPLIED
  	 xmlns CDATA #FIXED    "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_2.dtd"
  	>
  
  <!--
  
  	Describes this version (number) of the taglibrary (dewey decimal)
  
  	#PCDATA ::= [0-9]*{ "."[0-9] }0..3
    -->
  
  <!ELEMENT tlibversion (#PCDATA) >
  
  <!--
  
  	Describes the JSP version (number) this taglibrary requires in order to function (dewey decimal)
  
  	The default is 1.2
  
  	#PCDATA ::= [0-9]*{ "."[0-9] }0..3
  
    -->
  
  <!ELEMENT jspversion  (#PCDATA) >
  
  <!--
  	Defines a short (default) shortname to be used for tags and variable names used/created by this tag library.
  	Do not use white space, and do not start with digits or underscore.
  
  	#PCDATA ::= NMTOKEN
    -->
  
  <!ELEMENT shortname      (#PCDATA) >
  
  <!--
  
  	Defines a public URI that uniquely identifies this version of the
          tag library.  It is recommended that the URI identifying a tag library
          is actually a URL to the tag library descriptor for this specific
          version of the tag library.
    -->
  
  <!ELEMENT uri	 (#PCDATA) >
  
  <!--
  
  	Defines an arbitrary text string descirbing the tag library
    -->
  
  <!ELEMENT info	(#PCDATA) >
  
  <!--
  
          Defines an optional TagLibraryValidator class that can be used to
          validate the conformance of a JSP page to using this tag library.
  -->
  
  <!ELEMENT validatorclass (#PCDATA) >
  
  <!--
  
          Defines an optional event listener object to be instantiated and
          registered automatically.
  -->
  
  <!ELEMENT listener (listener-class) >
  
  <!--
  
          The listener-class element declares a class in the application that
          must be registered as a web application listener bean.  See the
          Servlet 2.3 specification for details.
  -->
  
  <!ELEMENT listener-class (#PCDATA) >
  
  
  <!--
  
  	The tag defines a unique tag in this tag library.  It has one
          attribute, id.
  
          The tag element may have several subelements defining:
  
          name              The unique action name
  
          tagclass          The tag handler class implementing
                            javax.servlet.jsp.tagext.Tag
  
          teiclass          An optional subclass of
                            javax.servlet.jsp.tagext.TagExtraInfo
  
          bodycontent       The body content type
  
          display-name      A short name that is intended to be displayed
                            by tools
  
          small-icon        Optional small-icon that can be used by tools
  
          large-icon        Optional large-icon that can be used by tools
  
          info              Optional tag-specific information
  
          variable          Optional scripting variable information
  
          attribute         All attributes of this action
  -->
  
  <!ELEMENT tag (name, tagclass, teiclass?, bodycontent?, display-name?,
                 small-icon?, large-icon?, info?, variable*, attribute*) >
  	<!ATTLIST tag id ID #IMPLIED >
  
  <!--
  
  	Defines the subclass of javax.serlvet.jsp.tagext.Tag that implements
  	the request time semantics for this tag. (required)
  
  	#PCDATA ::= fully qualified Java class name
    -->
  
  <!ELEMENT tagclass (#PCDATA) >
  
  <!--
  
  	Defines the subclass of javax.servlet.jsp.tagext.TagExtraInfo for
  	this tag. (optional)
  
  	The default is javax.servlet.jsp.tagext.TagExtraInfo
  
  	#PCDATA ::= fully qualified Java class name
    -->
  
  <!ELEMENT teiclass (#PCDATA) >
  
  <!--
  	Provides a hint as to the content of the body of this tag. Primarily
  	intended for use by page composition tools.
  
  	There are currently three values specified:
  
  	tagdependent	The body of the tag is interpreted by the tag 
  			implementation itself, and is most likely in a
  			different "langage", e.g embedded SQL statements.
  
  	JSP		The body of the tag contains nested JSP syntax
  	
  	empty		The body must be empty
  
  	The default (if not defined) is JSP
  
  	#PCDATA ::=  tagdependent | JSP | empty
  
    -->
  
  <!ELEMENT bodycontent (#PCDATA) >
  
  <!--
  
          The display-name element contains a short name that is intended
          to be displayed by tools.
  -->
  
  <!ELEMENT display-name (#PCDATA) >
  
  
  <!--
  
          The large-icon element contains the name of a file containing a large
          (32 x 32) icon image.  The file name is a relative path within the
          tag library.  The image must be either in the JPEG or GIF format, and
          the file name must end with the suffix ".jpg" or ".gif" respectively.
          The icon can be used by tools.
  -->
  
  <!ELEMENT large-icon (#PCDATA) >
  
  <!--
  
          The small-icon element contains the name of a file containing a large
          (32 x 32) icon image.  The file name is a relative path within the
          tag library.  The image must be either in the JPEG or GIF format, and
          the file name must end with the suffix ".jpg" or ".gif" respectively.
          The icon can be used by tools.
  -->
  
  <!ELEMENT small-icon (#PCDATA) >
  
  <!--
  
          The variable tag provides information on the scripting variables
          defined by this tag.  It is a (translation time) error for a tag
          that has one or more variable subelements to have a TagExtraInfo
          class that returns a non-null object.
  
          The subelements of variable are of the form:
  
          name-given               The variable name as a constant
  
          name-from-attribute      The name of an attribute whose (translation
                                   time) value will give the name of the
                                   variable.  One of name-given or
                                   name-from-attribute is required.
  
          class                    Name of the class of the variable.
                                   java.lang.String is default.
  
          declare                  Whether the variable is declared or not.
                                   True is the default.
  
          scope                    The scope of the scripting varaible
                                   defined.  NESTED is default.
  -->
  
  <!ELEMENT variable ( (name-given | name-from-attribute), class?,
                      declare?, scope?) >
  
  <!--
  
          The name for the scripting variable.  One of name-given or
          name-from-attribute is required.
  -->
  
  <!ELEMENT name-given (#PCDATA) >
  
  <!--
  
          The name of an attribute whose (translation-time) value will give
          the name of the variable.  One of name-given or name-from-attribute
          is required.
  -->
  
  <!ELEMENT name-from-attribute (#PCDATA) >
  
  <!--
  
          The optional name of the class for the scripting variable.  The
          default is java.lang.String.
  -->
  
  <!ELEMENT class (#PCDATA) >
  
  <!--
  
          Whether the scripting variable is to be defined or not.  See
          TagExtraInfo for details.  This element is optional and "true"
          is the default.
  -->
  
  <!ELEMENT declare (#PCDATA) >
  
  <!--
  
          The scope of the scripting variable.  See TagExtraInfo for details.
          The element is optional and "NESTED" is the default.  Other legal
          values are "AT_BEGIN" and "AT_END".
  -->
  
  <!ELEMENT scope (#PCDATA) >
  
  <!--
  
  	The attribute tag defines an attribute for the nesting tag
  
  	An attribute definition is composed of:
  	
  	- the attributes name (required)
  	- if the attribute is required or optional (optional)
  	- if the attributes value may be dynamically calculated at runtime
  	  by a scriptlet expression (optional)
          - the type of the attributes value (optional)
  
    -->
  
  <!ELEMENT attribute (name, required? , rtexprvalue?, type?) >
  	<!ATTLIST attribute     id     ID       #IMPLIED>
  
  <!--
  
  	Defines the canonical name of a tag or attribute being defined
  
  	#PCDATA ::= NMTOKEN
    -->
  
  <!ELEMENT name	(#PCDATA) >
  
  <!--
  
  	Defines if the nesting attribute is required or optional.
  
  	#PCDATA ::= true | false | yes | no
  
  	If not present then the default is "false", i.e the attribute is optional
    -->
  
  <!ELEMENT required    (#PCDATA) >
  
  <!--
  
  	Defines if the nesting attribute can have scriptlet expressions as
  	a value, i.e the value of the attribute may be dynamically calculated
  	at request time, as opposed to a static value determined at translation
  	time.
  
  	#PCDATA ::= true | false | yes | no
  
  	If not present then the default is "false", i.e the attribute has a static value
    -->
  
  <!ELEMENT rtexprvalue (#PCDATA) >
  
  <!--
  
          Defines the Java type of the attributes value.  For static values
          (those determined at translation time) the type is always
          java.lang.String.
  -->
  
  <!ELEMENT type (#PCDATA) >
  
  
  
  
  1.1                  jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/web_22.dtd
  
  Index: web_22.dtd
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!--
  The web-app element is the root of the deployment descriptor for
  a web application
  -->
  
  <!ELEMENT web-app (icon?, display-name?, description?, distributable?,
  context-param*, servlet*, servlet-mapping*, session-config?,
  mime-mapping*, welcome-file-list?, error-page*, taglib*,
  resource-ref*, security-constraint*, login-config?, security-role*,
  env-entry*, ejb-ref*)>
  
  <!--
  The icon element contains a small-icon and a large-icon element
  which specify the location within the web application for a small and
  large image used to represent the web application in a GUI tool. At a
  minimum, tools must accept GIF and JPEG format images.
  -->
  
  <!ELEMENT icon (small-icon?, large-icon?)>
  
  <!--
  The small-icon element contains the location within the web
  application of a file containing a small (16x16 pixel) icon image.
  -->
  
  <!ELEMENT small-icon (#PCDATA)>
  
  <!--
  The large-icon element contains the location within the web
  application of a file containing a large (32x32 pixel) icon image.
  -->
  
  <!ELEMENT large-icon (#PCDATA)>
  
  <!--
  The display-name element contains a short name that is intended
  to be displayed by GUI tools
  -->
  
  <!ELEMENT display-name (#PCDATA)>
  
  <!--
  The description element is used to provide descriptive text about
  the parent element.
  -->
  
  <!ELEMENT description (#PCDATA)>
  
  <!--
  The distributable element, by its presence in a web application
  deployment descriptor, indicates that this web application is
  programmed appropriately to be deployed into a distributed servlet
  container
  -->
  
  <!ELEMENT distributable EMPTY>
  
  <!--
  The context-param element contains the declaration of a web
  application's servlet context initialization parameters.
  -->
  
  <!ELEMENT context-param (param-name, param-value, description?)>
  
  <!--
  The param-name element contains the name of a parameter.
  -->
  
  <!ELEMENT param-name (#PCDATA)>
  
  <!--
  The param-value element contains the value of a parameter.
  -->
  
  <!ELEMENT param-value (#PCDATA)>
  
  <!--
  The servlet element contains the declarative data of a
  servlet. If a jsp-file is specified and the load-on-startup element is
  present, then the JSP should be precompiled and loaded.
  -->
  
  <!ELEMENT servlet (icon?, servlet-name, display-name?, description?,
  (servlet-class|jsp-file), init-param*, load-on-startup?, security-role-ref*)>
  
  <!--
  The servlet-name element contains the canonical name of the
  servlet.
  -->
  
  <!ELEMENT servlet-name (#PCDATA)>
  
  <!--
  The servlet-class element contains the fully qualified class name
  of the servlet.
  -->
  
  <!ELEMENT servlet-class (#PCDATA)>
  
  <!--
  The jsp-file element contains the full path to a JSP file within
  the web application.
  -->
  
  <!ELEMENT jsp-file (#PCDATA)>
  
  <!--
  The init-param element contains a name/value pair as an
  initialization param of the servlet
  -->
  
  <!ELEMENT init-param (param-name, param-value, description?)>
  
  <!--
  The load-on-startup element indicates that this servlet should be
  loaded on the startup of the web application. The optional contents of
  these element must be a positive integer indicating the order in which
  the servlet should be loaded. Lower integers are loaded before higher
  integers. If no value is specified, or if the value specified is not a
  positive integer, the container is free to load it at any time in the
  startup sequence.
  -->
  
  <!ELEMENT load-on-startup (#PCDATA)>
  
  <!--
  The servlet-mapping element defines a mapping between a servlet
  and a url pattern
  -->
  
  <!ELEMENT servlet-mapping (servlet-name, url-pattern)>
  
  <!--
  The url-pattern element contains the url pattern of the
  mapping. Must follow the rules specified in Section 10 of the Servlet
  API Specification.
  -->
  
  <!ELEMENT url-pattern (#PCDATA)>
  
  <!--
  The session-config element defines the session parameters for
  this web application.
  -->
  
  <!ELEMENT session-config (session-timeout?)>
  
  <!--
  The session-timeout element defines the default session timeout
  interval for all sessions created in this web application. The
  specified timeout must be expressed in a whole number of minutes.
  -->
  
  <!ELEMENT session-timeout (#PCDATA)>
  
  <!--
  The mime-mapping element defines a mapping between an extension
  and a mime type.
  -->
  
  <!ELEMENT mime-mapping (extension, mime-type)>
  
  <!--
  The extension element contains a string describing an
  extension. example: "txt"
  -->
  
  <!ELEMENT extension (#PCDATA)>
  
  <!--
  The mime-type element contains a defined mime type. example:
  "text/plain"
  -->
  
  <!ELEMENT mime-type (#PCDATA)>
  
  <!--
  The welcome-file-list contains an ordered list of welcome files
  elements.
  -->
  
  <!ELEMENT welcome-file-list (welcome-file+)>
  
  <!--
  The welcome-file element contains file name to use as a default
  welcome file, such as index.html
  -->
  
  <!ELEMENT welcome-file (#PCDATA)>
  
  <!--
  The taglib element is used to describe a JSP tag library.
  -->
  
  <!ELEMENT taglib (taglib-uri, taglib-location)>
  
  <!--
  The taglib-uri element describes a URI, relative to the location
  of the web.xml document, identifying a Tag Library used in the Web
  Application.
  -->
  
  <!ELEMENT taglib-uri (#PCDATA)>
  
  <!--
  the taglib-location element contains the location (as a resource
  relative to the root of the web application) where to find the Tag
  Libary Description file for the tag library.
  -->
  
  <!ELEMENT taglib-location (#PCDATA)>
  
  <!--
  The error-page element contains a mapping between an error code
  or exception type to the path of a resource in the web application
  -->
  
  <!ELEMENT error-page ((error-code | exception-type), location)>
  
  <!--
  The error-code contains an HTTP error code, ex: 404
  -->
  
  <!ELEMENT error-code (#PCDATA)>
  
  <!--
  The exception type contains a fully qualified class name of a
  Java exception type.
  -->
  
  <!ELEMENT exception-type (#PCDATA)>
  
  <!--
  The location element contains the location of the resource in the
  web application
  -->
  
  <!ELEMENT location (#PCDATA)>
  
  <!--
  The resource-ref element contains a declaration of a Web
  Application's reference to an external resource.
  -->
  
  <!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth)>
  
  <!--
  The res-ref-name element specifies the name of the resource
  factory reference name.
  -->
  
  <!ELEMENT res-ref-name (#PCDATA)>
  
  <!--
  The res-type element specifies the (Java class) type of the data
  source.
  -->
  
  <!ELEMENT res-type (#PCDATA)>
  
  <!--
  The res-auth element indicates whether the application component
  code performs resource signon programmatically or whether the
  container signs onto the resource based on the principle mapping
  information supplied by the deployer. Must be CONTAINER or SERVLET
  -->
  
  <!ELEMENT res-auth (#PCDATA)>
  
  <!--
  The security-constraint element is used to associate security
  constraints with one or more web resource collections
  -->
  
  <!ELEMENT security-constraint (web-resource-collection+,
  auth-constraint?, user-data-constraint?)>
  
  <!--
  The web-resource-collection element is used to identify a subset
  of the resources and HTTP methods on those resources within a web
  application to which a security constraint applies. If no HTTP methods
  are specified, then the security constraint applies to all HTTP
  methods.
  -->
  
  <!ELEMENT web-resource-collection (web-resource-name, description?,
  url-pattern*, http-method*)>
  
  <!--
  The web-resource-name contains the name of this web resource
  collection
  -->
  
  <!ELEMENT web-resource-name (#PCDATA)>
  
  <!--
  The http-method contains an HTTP method (GET | POST |...)
  -->
  
  <!ELEMENT http-method (#PCDATA)>
  
  <!--
  The user-data-constraint element is used to indicate how data
  communicated between the client and container should be protected
  -->
  
  <!ELEMENT user-data-constraint (description?, transport-guarantee)>
  
  <!--
  The transport-guarantee element specifies that the communication
  between client and server should be NONE, INTEGRAL, or
  CONFIDENTIAL. NONE means that the application does not require any
  transport guarantees. A value of INTEGRAL means that the application
  requires that the data sent between the client and server be sent in
  such a way that it can't be changed in transit. CONFIDENTIAL means
  that the application requires that the data be transmitted in a
  fashion that prevents other entities from observing the contents of
  the transmission. In most cases, the presence of the INTEGRAL or
  CONFIDENTIAL flag will indicate that the use of SSL is required.
  -->
  
  <!ELEMENT transport-guarantee (#PCDATA)>
  
  <!--
  The auth-constraint element indicates the user roles that should
  be permitted access to this resource collection. The role used here
  must appear in a security-role-ref element.
  -->
  
  <!ELEMENT auth-constraint (description?, role-name*)>
  
  <!--
  The role-name element contains the name of a security role.
  -->
  
  <!ELEMENT role-name (#PCDATA)>
  
  <!--
  The login-config element is used to configure the authentication
  method that should be used, the realm name that should be used for
  this application, and the attributes that are needed by the form login
  mechanism.
  -->
  
  <!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
  
  <!--
  The realm name element specifies the realm name to use in HTTP
  Basic authorization
  -->
  
  <!ELEMENT realm-name (#PCDATA)>
  
  <!--
  The form-login-config element specifies the login and error pages
  that should be used in form based login. If form based authentication
  is not used, these elements are ignored.
  -->
  
  <!ELEMENT form-login-config (form-login-page, form-error-page)>
  
  <!--
  The form-login-page element defines the location in the web app
  where the page that can be used for login can be found
  -->
  
  <!ELEMENT form-login-page (#PCDATA)>
  
  <!--
  The form-error-page element defines the location in the web app
  where the error page that is displayed when login is not successful
  can be found
  -->
  
  <!ELEMENT form-error-page (#PCDATA)>
  
  <!--
  The auth-method element is used to configure the authentication
  mechanism for the web application. As a prerequisite to gaining access
  to any web resources which are protected by an authorization
  constraint, a user must have authenticated using the configured
  mechanism. Legal values for this element are "BASIC", "DIGEST",
  "FORM", or "CLIENT-CERT".
  -->
  
  <!ELEMENT auth-method (#PCDATA)>
  
  <!--
  The security-role element contains the declaration of a security
  role which is used in the security-constraints placed on the web
  application.
  -->
  
  <!ELEMENT security-role (description?, role-name)>
  
  <!--
  The role-name element contains the name of a role. This element
  must contain a non-empty string.
  -->
  
  <!ELEMENT security-role-ref (description?, role-name, role-link)>
  
  <!--
  The role-link element is used to link a security role reference
  to a defined security role. The role-link element must contain the
  name of one of the security roles defined in the security-role
  elements.
  -->
  
  <!ELEMENT role-link (#PCDATA)>
  
  <!--
  The env-entry element contains the declaration of an
  application's environment entry. This element is required to be
  honored on in J2EE compliant servlet containers.
  -->
  
  <!ELEMENT env-entry (description?, env-entry-name, env-entry-value?,
  env-entry-type)>
  
  <!--
  The env-entry-name contains the name of an application's
  environment entry
  -->
  
  <!ELEMENT env-entry-name (#PCDATA)>
  
  <!--
  The env-entry-value element contains the value of an
  application's environment entry
  -->
  
  <!ELEMENT env-entry-value (#PCDATA)>
  
  <!--
  The env-entry-type element contains the fully qualified Java type
  of the environment entry value that is expected by the application
  code. The following are the legal values of env-entry-type:
  java.lang.Boolean, java.lang.String, java.lang.Integer,
  java.lang.Double, java.lang.Float.
  -->
  
  <!ELEMENT env-entry-type (#PCDATA)>
  
  <!--
  The ejb-ref element is used to declare a reference to an
  enterprise bean. 
  -->
  
  <!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type, home, remote,
  ejb-link?)>
  
  <!--
  The ejb-ref-name element contains the name of an EJB
  reference. This is the JNDI name that the servlet code uses to get a
  reference to the enterprise bean.
  -->
  
  <!ELEMENT ejb-ref-name (#PCDATA)>
  
  <!--
  The ejb-ref-type element contains the expected java class type of
  the referenced EJB.
  -->
  
  <!ELEMENT ejb-ref-type (#PCDATA)>
  
  <!--
  The ejb-home element contains the fully qualified name of the
  EJB's home interface
  -->
  
  <!ELEMENT home (#PCDATA)>
  
  <!--
  The ejb-remote element contains the fully qualified name of the
  EJB's remote interface
  -->
  
  <!ELEMENT remote (#PCDATA)>
  
  <!--
  The ejb-link element is used in the ejb-ref element to specify
  that an EJB reference is linked to an EJB in an encompassing Java2
  Enterprise Edition (J2EE) application package. The value of the
  ejb-link element must be the ejb-name of and EJB in the J2EE
  application package.
  -->
  
  <!ELEMENT ejb-link (#PCDATA)>
  
  <!--
  The ID mechanism is to allow tools to easily make tool-specific
  references to the elements of the deployment descriptor. This allows
  tools that produce additional deployment information (i.e information
  beyond the standard deployment descriptor information) to store the
  non-standard information in a separate file, and easily refer from
  these tools-specific files to the information in the standard web-app
  deployment descriptor.
  -->
  
  <!ATTLIST web-app id ID #IMPLIED>
  <!ATTLIST icon id ID #IMPLIED>
  <!ATTLIST small-icon id ID #IMPLIED>
  <!ATTLIST large-icon id ID #IMPLIED>
  <!ATTLIST display-name id ID #IMPLIED>
  <!ATTLIST description id ID #IMPLIED>
  <!ATTLIST distributable id ID #IMPLIED>
  <!ATTLIST context-param id ID #IMPLIED>
  <!ATTLIST param-name id ID #IMPLIED>
  <!ATTLIST param-value id ID #IMPLIED>
  <!ATTLIST servlet id ID #IMPLIED>
  <!ATTLIST servlet-name id ID #IMPLIED>
  <!ATTLIST servlet-class id ID #IMPLIED>
  <!ATTLIST jsp-file id ID #IMPLIED>
  <!ATTLIST init-param id ID #IMPLIED>
  <!ATTLIST load-on-startup id ID #IMPLIED>
  <!ATTLIST servlet-mapping id ID #IMPLIED>
  <!ATTLIST url-pattern id ID #IMPLIED>
  <!ATTLIST session-config id ID #IMPLIED>
  <!ATTLIST session-timeout id ID #IMPLIED>
  <!ATTLIST mime-mapping id ID #IMPLIED>
  <!ATTLIST extension id ID #IMPLIED>
  <!ATTLIST mime-type id ID #IMPLIED>
  <!ATTLIST welcome-file-list id ID #IMPLIED>
  <!ATTLIST welcome-file id ID #IMPLIED>
  <!ATTLIST taglib id ID #IMPLIED>
  <!ATTLIST taglib-uri id ID #IMPLIED>
  <!ATTLIST taglib-location id ID #IMPLIED>
  <!ATTLIST error-page id ID #IMPLIED>
  <!ATTLIST error-code id ID #IMPLIED>
  <!ATTLIST exception-type id ID #IMPLIED>
  <!ATTLIST location id ID #IMPLIED>
  <!ATTLIST resource-ref id ID #IMPLIED>
  <!ATTLIST res-ref-name id ID #IMPLIED>
  <!ATTLIST res-type id ID #IMPLIED>
  <!ATTLIST res-auth id ID #IMPLIED>
  <!ATTLIST security-constraint id ID #IMPLIED>
  <!ATTLIST web-resource-collection id ID #IMPLIED>
  <!ATTLIST web-resource-name id ID #IMPLIED>
  <!ATTLIST http-method id ID #IMPLIED>
  <!ATTLIST user-data-constraint id ID #IMPLIED>
  <!ATTLIST transport-guarantee id ID #IMPLIED>
  <!ATTLIST auth-constraint id ID #IMPLIED>
  <!ATTLIST role-name id ID #IMPLIED>
  <!ATTLIST login-config id ID #IMPLIED>
  <!ATTLIST realm-name id ID #IMPLIED>
  <!ATTLIST form-login-config id ID #IMPLIED>
  <!ATTLIST form-login-page id ID #IMPLIED>
  <!ATTLIST form-error-page id ID #IMPLIED>
  <!ATTLIST auth-method id ID #IMPLIED>
  <!ATTLIST security-role id ID #IMPLIED>
  <!ATTLIST security-role-ref id ID #IMPLIED>
  <!ATTLIST role-link id ID #IMPLIED>
  <!ATTLIST env-entry id ID #IMPLIED>
  <!ATTLIST env-entry-name id ID #IMPLIED>
  <!ATTLIST env-entry-value id ID #IMPLIED>
  <!ATTLIST env-entry-type id ID #IMPLIED>
  <!ATTLIST ejb-ref id ID #IMPLIED>
  <!ATTLIST ejb-ref-name id ID #IMPLIED>
  <!ATTLIST ejb-ref-type id ID #IMPLIED>
  <!ATTLIST home id ID #IMPLIED>
  <!ATTLIST remote id ID #IMPLIED>
  <!ATTLIST ejb-link id ID #IMPLIED>
  
  
  
  1.1                  jakarta-tomcat-4.0/jasper/src/share/org/apache/jasper/resources/web_23.dtd
  
  Index: web_23.dtd
  ===================================================================
  <?xml version="1.0" encoding="ISO-8859-1"?>
  
  <!-- TEMPORARY DTD FOR THE SERVLET 2.3 WEB APPLICATION DEPLOYMENT
       DESCRIPTOR.  THIS WILL BE REPLACED BY THE OFFICIAL ONE WHEN
       IT IS POSTED -->
  
  <!-- The web-app element is the root of the deployment descriptor for
  a web application -->
  	
  <!ELEMENT web-app (icon?, display-name?, description?, distributable?,
  context-param*, filter*, filter-mapping*, listener*,
  servlet*, servlet-mapping*, session-config?,
  mime-mapping*, welcome-file-list?, error-page*, taglib*,
  resource-ref*, security-constraint*, login-config?, security-role*,
  env-entry*, ejb-ref*)>
  
  <!-- Declares a filter in the web application deployment descriptor.
  The filter is mapped to either a servlet or a URL pattern in the
  filter-mapping element, using the filter-name value to reference.
  Filters can access the initialization parameters declared in the
  deployment descriptor at runtime via the FilterConfig interface. -->
  
  <!ELEMENT filter (icon?, filter-name, display-name?, description?,
  filter-class, init-param*)>
  
  <!-- The logical name of the filter.  This name is used to map
  the filter.  -->
  
  <!ELEMENT filter-name (#PCDATA)>
  
  <!-- The fully qualified classname of the filter. -->
  
  <!ELEMENT filter-class (#PCDATA)>
  
  <!-- Declaration of the filter mappings in this web application.
  The conatiner used the filter-mapping declarations to decide which
  filters to apply to a request, and in what order.  The container
  matches the request URI to a Servlet in the normal way.  To determine
  which filters to apply it matches filter-mapping declarations either
  on servlet-name, or on url-pattern for each filter-mapping element,
  depending on which style is used.  The order in which filters are
  invoked is the order in which filter-mapping declarations that match
  a request URI for a servlet appear in the list of filter-mapping
  elements.  The filter-name value must be the value of the filter-
  name sub-elements of one of the filter declarations in the
  deployment descriptor. -->
  
  <!ELEMENT filter-mapping (filter-name, (url-pattern | servlet-name))>
  
  <!-- The icon element contains a small-icon and a large-icon element
  which specify the location within the web application for a small and
  large image used to represent the web application in a GUI tool. At a
  minimum, tools must accept GIF and JPEG format images. -->
  
  <!ELEMENT icon (small-icon?, large-icon?)>
  
  <!-- The small-icon element contains the location within the web
  application of a file containing a small (16x16 pixel) icon image. -->
  
  <!ELEMENT small-icon (#PCDATA)>
  
  <!-- The large-icon element contains the location within the web
  application of a file containing a large (32x32 pixel) icon image.
  -->
  
  <!ELEMENT large-icon (#PCDATA)>
  
  <!-- The display-name element contains a short name that is intended
  to be displayed by GUI tools -->
  
  <!ELEMENT display-name (#PCDATA)>
  
  <!-- The description element is used to provide descriptive text about
  the parent element. -->
  
  <!ELEMENT description (#PCDATA)>
  
  <!-- The distributable element, by its presence in a web application
  deployment descriptor, indicates that this web application is
  programmed appropriately to be deployed into a distributed servlet
  container -->
  
  <!ELEMENT distributable EMPTY>
  
  <!-- The context-param element contains the declaration of a web
  application's servlet context initialization parameters. -->
  
  <!ELEMENT context-param (param-name, param-value, description?)>
  
  <!-- The param-name element contains the name of a parameter. -->
  
  <!ELEMENT param-name (#PCDATA)>
  
  <!-- The param-value element contains the value of a parameter. -->
  
  <!ELEMENT param-value (#PCDATA)>
  
  <!-- The listener element indicates the deployment properties
  for a web application listener bean. -->
  
  <!ELEMENT listener (listener-class)>
  
  <!-- The listener-class element declares a class in the application
  must be registered as a web application listener bean. -->
  
  <!ELEMENT listener-class (#PCDATA)>
  
  <!-- The servlet element contains the declarative data of a
  servlet. If a jsp-file is specified and the load-on-startup element is
  present, then the JSP should be precompiled and loaded. -->
  
  <!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, security-role-ref*)>
  
  <!-- The servlet-name element contains the canonical name of the
  servlet. -->
  
  <!ELEMENT servlet-name (#PCDATA)>
  
  <!-- The servlet-class element contains the fully qualified class name
  of the servlet. -->
  
  <!ELEMENT servlet-class (#PCDATA)>
  
  <!-- The jsp-file element contains the full path to a JSP file within
  the web application. -->
  
  <!ELEMENT jsp-file (#PCDATA)>
  
  <!-- The init-param element contains a name/value pair as an
  initialization param of the servlet -->
  
  <!ELEMENT init-param (param-name, param-value, description?)>
  
  <!-- The load-on-startup element indicates that this servlet should be
  loaded on the startup of the web application. The optional contents of
  these element must be a positive integer indicating the order in which
  the servlet should be loaded. Lower integers are loaded before higher
  integers. If no value is specified, or if the value specified is not a
  positive integer, the container is free to load it at any time in the
  startup sequence. -->
  
  <!ELEMENT load-on-startup (#PCDATA)>
  
  <!-- The servlet-mapping element defines a mapping between a servlet
  and a url pattern -->
  
  <!ELEMENT servlet-mapping (servlet-name, url-pattern)>
  
  <!-- The url-pattern element contains the url pattern of the
  mapping. Must follow the rules specified in Section 10 of the Servlet
  API Specification. -->
  
  <!ELEMENT url-pattern (#PCDATA)>
  
  <!-- The session-config element defines the session parameters for
  this web application. -->
  
  <!ELEMENT session-config (session-timeout?)>
  
  <!-- The session-timeout element defines the default session timeout
  interval for all sessions created in this web application. The
  specified timeout must be expressed in a whole number of minutes. -->
  
  <!ELEMENT session-timeout (#PCDATA)>
  
  <!-- The mime-mapping element defines a mapping between an extension
  and a mime type. -->
  
  <!ELEMENT mime-mapping (extension, mime-type)>
  
  <!-- The extension element contains a string describing an
  extension. example: txt -->
  
  <!ELEMENT extension (#PCDATA)>
  
  <!-- The mime-type element contains a defined mime type. example:
  text/plain -->
  
  <!ELEMENT mime-type (#PCDATA)>
  
  <!-- The welcome-file-list contains an ordered list of welcome files
  elements. -->
  
  <!ELEMENT welcome-file-list (welcome-file+)>
  
  <!-- The welcome-file element contains file name to use as a default
  welcome file, such as index.html -->
  
  <!ELEMENT welcome-file (#PCDATA)>
  
  <!-- The taglib element is used to describe a JSP tag library. -->
  
  <!ELEMENT taglib (taglib-uri, taglib-location)>
  
  <!-- The taglib-uri element describes a URI, relative to the location
  of the web.xml document, identifying a Tag Library used in the Web
  Application. -->
  
  <!ELEMENT taglib-uri (#PCDATA)>
  
  <!-- the taglib-location element contains the location (as a resource
  relative to the root of the web application) where to find the Tag
  Libary Description file for the tag library. -->
  
  <!ELEMENT taglib-location (#PCDATA)>
  
  <!-- The error-page element contains a mapping between an error code
  or exception type to the path of a resource in the web application -->
  
  <!ELEMENT error-page ((error-code | exception-type), location)>
  
  <!-- The error-code contains an HTTP error code, ex: 404 -->
  
  <!ELEMENT error-code (#PCDATA)>
  
  <!-- The exception type contains a fully qualified class name of a
  Java exception type. -->
  
  <!ELEMENT exception-type (#PCDATA)>
  
  <!-- The location element contains the location of the resource in the
  web application -->
  
  <!ELEMENT location (#PCDATA)>
  
  <!-- The resource-ref element contains a declaration of a Web
  Application's reference to an external resource. -->
  
  <!ELEMENT resource-ref (description?, res-ref-name, res-type, res-auth)>
  
  <!-- The res-ref-name element specifies the name of the resource
  factory reference name. -->
  
  <!ELEMENT res-ref-name (#PCDATA)>
  
  <!-- The res-type element specifies the (Java class) type of the data
  source. -->
  
  <!ELEMENT res-type (#PCDATA)>
  
  <!-- The res-auth element indicates whether the application component
  code performs resource signon programmatically or whether the
  container signs onto the resource based on the principle mapping
  information supplied by the deployer. Must be CONTAINER or SERVLET -->
  
  <!ELEMENT res-auth (#PCDATA)>
  
  <!-- The security-constraint element is used to associate security
  constraints with one or more web resource collections -->
  
  <!ELEMENT security-constraint (web-resource-collection+,
  auth-constraint?, user-data-constraint?)>
  
  <!-- The web-resource-collection element is used to identify a subset
  of the resources and HTTP methods on those resources within a web
  application to which a security constraint applies. If no HTTP methods
  are specified, then the security constraint applies to all HTTP
  methods. -->
  
  <!ELEMENT web-resource-collection (web-resource-name, description?,
  url-pattern*, http-method*)>
  
  <!-- The web-resource-name contains the name of this web resource
  collection -->
  
  <!ELEMENT web-resource-name (#PCDATA)>
  
  <!-- The http-method contains an HTTP method (GET | POST |...) -->
  
  <!ELEMENT http-method (#PCDATA)>
  
  <!-- The user-data-constraint element is used to indicate how data
  communicated between the client and container should be protected -->
  
  <!ELEMENT user-data-constraint (description?, transport-guarantee)>
  
  <!-- The transport-guarantee element specifies that the communication
  between client and server should be NONE, INTEGRAL, or
  CONFIDENTIAL. NONE means that the application does not require any
  transport guarantees. A value of INTEGRAL means that the application
  requires that the data sent between the client and server be sent in
  such a way that it can't be changed in transit. CONFIDENTIAL means
  that the application requires that the data be transmitted in a
  fashion that prevents other entities from observing the contents of
  the transmission. In most cases, the presence of the INTEGRAL or
  CONFIDENTIAL flag will indicate that the use of SSL is required. -->
  
  <!ELEMENT transport-guarantee (#PCDATA)>
  
  <!-- The auth-constraint element indicates the user roles that should
  be permitted access to this resource collection. The role used here
  must appear in a security-role-ref element. -->
  
  <!ELEMENT auth-constraint (description?, role-name*)>
  
  <!-- The role-name element contains the name of a security role. -->
  
  <!ELEMENT role-name (#PCDATA)>
  
  <!-- The login-config element is used to configure the authentication
  method that should be used, the realm name that should be used for
  this application, and the attributes that are needed by the form login
  mechanism. -->
  
  <!ELEMENT login-config (auth-method?, realm-name?, form-login-config?)>
  
  <!-- The realm name element specifies the realm name to use in HTTP
  Basic authorization -->
  
  <!ELEMENT realm-name (#PCDATA)>
  
  <!-- The form-login-config element specifies the login and error pages
  that should be used in form based login. If form based authentication
  is not used, these elements are ignored. -->
  
  <!ELEMENT form-login-config (form-login-page, form-error-page)>
  
  <!-- The form-login-page element defines the location in the web app
  where the page that can be used for login can be found -->
  
  <!ELEMENT form-login-page (#PCDATA)>
  
  <!-- The form-error-page element defines the location in the web app
  where the error page that is displayed when login is not successful
  can be found -->
  
  <!ELEMENT form-error-page (#PCDATA)>
  
  <!-- The auth-method element is used to configure the authentication
  mechanism for the web application. As a prerequisite to gaining access
  to any web resources which are protected by an authorization
  constraint, a user must have authenticated using the configured
  mechanism. Legal values for this element are "BASIC", "DIGEST",
  "FORM", or "CLIENT-CERT". -->
  
  <!ELEMENT auth-method (#PCDATA)>
  
  <!-- The security-role element contains the declaration of a security
  role which is used in the security-constraints placed on the web
  application. -->
  
  <!ELEMENT security-role (description?, role-name)>
  
  <!-- The role-name element contains the name of a role. This element
  must contain a non-empty string. -->
  
  <!ELEMENT security-role-ref (description?, role-name, role-link)> 
  
  <!-- The role-link element is used to link a security role reference
  to a defined security role. The role-link element must contain the
  name of one of the security roles defined in the security-role
  elements. -->
  
  <!ELEMENT role-link (#PCDATA)>
  
  <!-- The env-entry element contains the declaration of an
  application's environment entry. This element is required to be
  honored on in J2EE compliant servlet containers. -->
  
  <!ELEMENT env-entry (description?, env-entry-name, env-entry-value?,
  env-entry-type)>
  
  <!-- The env-entry-name contains the name of an application's
  environment entry -->
  
  <!ELEMENT env-entry-name (#PCDATA)>
  
  <!-- The env-entry-value element contains the value of an
  application's environment entry -->
  
  <!ELEMENT env-entry-value (#PCDATA)>
  
  <!-- The env-entry-type element contains the fully qualified Java type
  of the environment entry value that is expected by the application
  code. The following are the legal values of env-entry-type:
  java.lang.Boolean, java.lang.String, java.lang.Integer,
  java.lang.Double, java.lang.Float. -->
  
  <!ELEMENT env-entry-type (#PCDATA)>
  
  <!-- The ejb-ref element is used to declare a reference to an
  enterprise bean.  -->
  
  <!ELEMENT ejb-ref (description?, ejb-ref-name, ejb-ref-type, home,
  remote, ejb-link?, runAs?)>
  
  <!-- The ejb-ref-name element contains the name of an EJB
  reference. This is the JNDI name that the servlet code uses to get a
  reference to the enterprise bean. -->
  
  <!ELEMENT ejb-ref-name (#PCDATA)>
  
  <!-- The ejb-ref-type element contains the expected java class type of
  the referenced EJB. -->
  
  <!ELEMENT ejb-ref-type (#PCDATA)>
  
  <!-- The ejb-home element contains the fully qualified name of the
  EJB's home interface -->
  
  <!ELEMENT home (#PCDATA)>
  
  <!-- The ejb-remote element contains the fully qualified name of the
  EJB's remote interface -->
  
  <!ELEMENT remote (#PCDATA)>
  
  <!-- The ejb-link element is used in the ejb-ref element to specify
  that an EJB reference is linked to an EJB in an encompassing Java2
  Enterprise Edition (J2EE) application package. The value of the
  ejb-link element must be the ejb-name of and EJB in the J2EE
  application package. -->
  
  <!ELEMENT ejb-link (#PCDATA)>
  
  <!-- The runAs element must contain the name of a security role
  defined for this web application. -->
  
  <!ELEMENT runAs (#PCDATA)>
  
  <!-- The ID mechanism is to allow tools to easily make tool-specific
  references to the elements of the deployment descriptor. This allows
  tools that produce additional deployment information (i.e information
  beyond the standard deployment descriptor information) to store the
  non-standard information in a separate file, and easily refer from
  these tools-specific files to the information in the standard web-app
  deployment descriptor. -->
  
  <!ATTLIST web-app id ID #IMPLIED>
  <!ATTLIST filter id ID #IMPLIED>
  <!ATTLIST filter-name id ID #IMPLIED>
  <!ATTLIST filter-class id ID #IMPLIED>
  <!ATTLIST filter-mapping id ID #IMPLIED>
  <!ATTLIST icon id ID #IMPLIED>
  <!ATTLIST small-icon id ID #IMPLIED>
  <!ATTLIST large-icon id ID #IMPLIED>
  <!ATTLIST display-name id ID #IMPLIED>
  <!ATTLIST description id ID #IMPLIED>
  <!ATTLIST distributable id ID #IMPLIED>
  <!ATTLIST context-param id ID #IMPLIED>
  <!ATTLIST param-name id ID #IMPLIED>
  <!ATTLIST param-value id ID #IMPLIED>
  <!ATTLIST listener id ID #IMPLIED>
  <!ATTLIST listener-class id ID #IMPLIED>
  <!ATTLIST servlet id ID #IMPLIED>
  <!ATTLIST servlet-name id ID #IMPLIED>
  <!ATTLIST servlet-class id ID #IMPLIED>
  <!ATTLIST jsp-file id ID #IMPLIED>
  <!ATTLIST init-param id ID #IMPLIED>
  <!ATTLIST load-on-startup id ID #IMPLIED>
  <!ATTLIST servlet-mapping id ID #IMPLIED>
  <!ATTLIST url-pattern id ID #IMPLIED>
  <!ATTLIST session-config id ID #IMPLIED>
  <!ATTLIST session-timeout id ID #IMPLIED>
  <!ATTLIST mime-mapping id ID #IMPLIED>
  <!ATTLIST extension id ID #IMPLIED>
  <!ATTLIST mime-type id ID #IMPLIED>
  <!ATTLIST welcome-file-list id ID #IMPLIED>
  <!ATTLIST welcome-file id ID #IMPLIED>
  <!ATTLIST error-page id ID #IMPLIED>
  <!ATTLIST error-code id ID #IMPLIED>
  <!ATTLIST exception-type id ID #IMPLIED>
  <!ATTLIST location id ID #IMPLIED>
  <!ATTLIST resource-ref id ID #IMPLIED>
  <!ATTLIST res-ref-name id ID #IMPLIED>
  <!ATTLIST res-type id ID #IMPLIED>
  <!ATTLIST res-auth id ID #IMPLIED>
  <!ATTLIST security-constraint id ID #IMPLIED>
  <!ATTLIST web-resource-collection id ID #IMPLIED>
  <!ATTLIST web-resource-name id ID #IMPLIED>
  <!ATTLIST http-method id ID #IMPLIED>
  <!ATTLIST user-data-constraint id ID #IMPLIED>
  <!ATTLIST transport-guarantee id ID #IMPLIED>
  <!ATTLIST auth-constraint id ID #IMPLIED>
  <!ATTLIST role-name id ID #IMPLIED>
  <!ATTLIST auth-method id ID #IMPLIED>
  <!ATTLIST basic-auth id ID #IMPLIED>
  <!ATTLIST form-auth id ID #IMPLIED>
  <!ATTLIST form-login-page id ID #IMPLIED>
  <!ATTLIST form-error-page id ID #IMPLIED>
  <!ATTLIST form-login-config id ID #IMPLIED>
  <!ATTLIST realm-name id ID #IMPLIED>
  <!ATTLIST login-config id ID #IMPLIED>
  <!ATTLIST security-role id ID #IMPLIED>
  <!ATTLIST security-role-ref id ID #IMPLIED>
  <!ATTLIST role-link id ID #IMPLIED>
  <!ATTLIST env-entry id ID #IMPLIED>
  <!ATTLIST env-entry-name id ID #IMPLIED>
  <!ATTLIST env-entry-value id ID #IMPLIED>
  <!ATTLIST env-entry-type id ID #IMPLIED>
  <!ATTLIST mutual-auth id ID #IMPLIED>
  <!ATTLIST ejb-ref id ID #IMPLIED>
  <!ATTLIST ejb-ref-name id ID #IMPLIED>
  <!ATTLIST ejb-ref-type id ID #IMPLIED>
  <!ATTLIST home id ID #IMPLIED>
  <!ATTLIST remote id ID #IMPLIED>
  <!ATTLIST ejb-link id ID #IMPLIED>
  <!ATTLIST runAs iid ID #IMPLIED>