>Here, I am confusing JSTL version. Sounds like it is using JSTL 1.0, > but why it is using 'web-jsptaglibrary_1_2.dtd' ? That is correct. The DTD is defined as part of the JSP spec. JSTL1.0 was written for JSP1.2 - it is a custom tag library for JSP1.2.
Your web.xml is declared as using Version 2.3. You have JSTL 1.0 installed. So your web application will act like a JSP1.2 container - ie EL will only be evaluated in the JSTL tags. Also you can't use EL functions.
If you want to use JSP2.0/JSTL1.1, you need to update your web.xml to declared itself as version2.4, and also install JSTL1.1 jars instead of JSTL1.0.
As an aside, the code will work perfectly fine without that if statement. Just try it: