<jsp:root
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    version="2.0">
<jsp:declaration>
  Collection myData;
</jsp:declaration>
<HTML>
<HEAD>
<TITLE>Another Tag File Example</TITLE>
</HEAD>
<BODY>
<H2>News Portal: Another Tag File Example</H2>
    <TABLE border="0">
      <jsp:scriptlet>
      for (Iterator each = myData.iterator(); each.hasNext();){
      Element eachElem = each.next();
      </jsp:scriptlet>
      <TR valign="top">
        <TD>
  <jsp:scriptlet>
    output.write(eachElem.getName());
  </jsp:scriptlet>
        </TD>
        <TD>
  <jsp:scriptlet>
    output.write(eachElem.getPrice());
  </jsp:scriptlet>
        </TD>
        <TD>
  <jsp:scriptlet>
    output.write(eachElem.getDiscount());
  </jsp:scriptlet>        </TD>

      </TR>
    <jsp:scriptlet>
      }
    </jsp:scriptlet>
    </TABLE>
  </BODY>
</HTML>

</jsp:declaration>
