HTML only gives instructions to a Web browser regarding how to display the infor- mation. This is a very important function, but it means that you can’t interpret the HTML semantically. This is where XML comes in. It’s  easy  to  say  that  the  Web  could  have  been  designed  better,  but  hindsight  is always 20/20. In truth, the Web is great because it’s so easy to extend. Though it was originally intended for static documents, it was easy to add support for images and dynamic data. A Web server doesn’t care what kind of information it sends or where it came from. HTTP merely describes the mechanics of transferring the information in a simple  and  lightweight  manner.  If  the  HTML  document  contains  JavaScript,  that’s fine—it’s up to the browser to understand how to use that information. Likewise, creating database-driven Web pages is just a burden on the server. Web browsers don’t know the first thing about interacting with a database. Strictly speak- ing, an HTTP server process doesn’t, either. It just knows to hand off certain URLs to servlets and other server-side modules that interact with the database and produce dynamic results. This evolution continues today with Web services. HTTP is so simple that you can easily embed simple Web clients in your code. Then, you can grab data from remote machines and use their data in your programs. Because HTTP doesn’t care what is sent, you can use XML to structure the data. HTTP is also very loose in what it receives, so you can send data back to the server. Thus, a protocol originally intended to make it easy for physicists to share documents can be used as the backbone for powerful dis- tributed applications. The process of developing Web applications is maturing. While early Web applica- tion developers had to concoct solutions as they encountered a wide variety of prob- lems, a lot of the pioneering is done. The best solutions are being recognized as such and adopted widely. Java and Java Database Connectivity (JDBC) are good examples of this, as are XML and XSLT. The XSQL framework is yet another evolution in Web development. With XSQL, producing dynamic Web pages that interact with the database is nearly as simple as writing an HTML page itself. In the not-so-distant past, you had to write a module in a language like Java, Perl, or C++ that managed the database connection, executed SQL against the database, and then processed the results. That just got you started. From there, you had to figure out what to do with the results. Because the number and type of results could vary widely for the same module, you had to deal with issues like how many results to put on a page and how to format different types. This model, often called the three-layered model, is illustrated in Figure 1.1. Figure 1.1 The three-layered model. Database Client Presentation Layer Business Logic Layer Middle Tier Database Layer 4 Chapter 1 271209 Ch01.F  12/9/02  2:00 PM  Page 4