Example 11-17: ValidateAirport.jsp produces an airport "validationgram"

<%@page import="java.sql.*, Examples, oracle.xml.sql.query.*" %>
<%
    Connection cn = Examples.getConnection();
    String code = request.getParameter("find");

    // First try an exact match on the airport 3-letter code
    String qry = "SELECT tla as \"Code\", description as \"Name\""+
                 "  FROM airport "+
                 " WHERE tla = UPPER('" + code + "')";
    OracleXMLQuery oxq = new OracleXMLQuery( cn, qry);

    // Signal a catch-able exception when no data found
    oxq.setRaiseNoRowsException(true);

    // Setting RowsetTag to "" omits it from the result.
    oxq.setRowsetTag("");
    oxq.setRowTag("Airport");

    try {
      out.println(oxq.getXMLString());
    }
    catch (oracle.xml.sql.OracleXMLSQLNoRowsException e) {

      // If no rows found, try a "fuzzy" match on the airport description
      qry = "SELECT tla as \"Code\", description as \"Name\""+
            "  FROM airport "+
            " WHERE UPPER(description) LIKE UPPER('%"+ code + "%')"+
            " ORDER BY UPPER(description)";
      OracleXMLQuery oxq2 = new OracleXMLQuery(cn,qry);
      oxq2.setRowsetTag("Error");
      oxq2.setRowTag("Airport");
      out.println(oxq2.getXMLString());
    }
    cn.close();
%>