reviewed by Hans C. Arents
Aimed Squarely At Developers
XML (EXtensible Markup
Language) is widely seen as the key enabling technology for the next
phase in the evolution of the Internet. All the new breakthrough Internet
technologies such as business-to-business e-commerce data exchange (BizTalk) or wireless Web access from digital
mobile phones (WAP) are based on the use
of XML. As a result there is a lot of excitement and hype surrounding XML,
leading to an avalanche of good (and not-so-good) XML books.
March 20, 2000
These XML books
range from excellent introductory books like XML:
A Primer or Teach
Yourself XML in 21 Days to essential reference works like the XML
Bible or Professional
XML. The recently released XML
by Example by Benoît Marchal sits somewhere in the middle, providing you
with just the right amount of information to get you immediately started
developing XML solutions, but still offering you enough background information
to see the big picture behind XML and its related standards.
A Useful Focus On Practical
XML
Most XML books seem to
suffer from the same shortcoming: they're full of dry theory on XML and its
related standards, but they're lacking in clear, practical examples on precisely
how to use this exciting technology. The by Example
series of books by Que has
always advocated taking a hands-on approach, by not just talking about concepts,
but also offering the developer working examples of those concepts in real use.
XML is full of very powerful, but also pretty abstract concepts, so it is
certainly necessary to illustrate the power of XML by working code that a
developer can try to understand and immediately use.
In XML by Example, you are
taken through a logical sequence of chapters, starting with the basic notions
behind XML and ending with the development of a complete XML-based e-commerce
application. The only thing you need to get started is a working knowledge of
HTML and JavaScript, and by the end of the book you will know more than enough
to understand how and where you can effectively use XML.
XML Basics
The first four chapters provide a gentle introduction
to XML. In contrast to most books on XML, not too much time is spent on
discussing XML's roots in SGML (Standard Generalized Markup
Language), but Marchal still makes very clear the defining
characteristics of XML, inherited from XML: its focus on separating content from
structure and presentation, the importance it attaches to syntactical
correctness and structural validation, the attention it devotes to truly
capturing the meaning and purpose of data, etc.
From the very beginning, the
author correctly argues that XML is not only well suited for document
applications but also for data applications, since XML basically makes the
distinction between documents and data irrelevant. Both become information that
can now be exploited as well by humans as by programs. The first chapter also
provides a whirlwind overview of the whole alphabet soup of XML related
standards (XML
Namespaces, XML
Schemas, XSL, XLink and XPointer, DOM and SAX), and briefly discusses the
different categories of XML processing software (browsers, editors, parsers and
convertors, for a complete overview see XMLsoftware).
The second chapter delves
right into the hart of the matter, discussing the syntax of XML, starting with
some simple examples, highlighting common errors and pitfalls and ending with
some frequently asked questions on XML syntax. For a more comprehensive syntax
overview you may also want to consider buying the XML
Pocket Reference by Robert Eckstein, which serves as handy companion when
you're writing code, or the second edition of The
XML Companion by Neil Bradley.
The third chapter teaches how to model XML
documents and data using DTDs (Document Type Definitions),
and also discusses how the W3C is now working
on XML Schemas as an alternative to DTDs (in order to address a DTD's major
shortcomings when it comes to modeling data). This chapter is clearly the most
abstract one in the whole book, but since DTDs are such an essential part of
what makes XML perform its magic, you'll have to get through it one way or
another.
Fortunately, Marchal succeeds in clearly illustrating each key DTD
concept by offering some well-choosen examples. If after reading this chapter
you suddenly can't get enough of DTDs, I suggest you study them in-depth by
reading the excellent Inside
XML DTDs by Simon St. Laurent, et al., which discusses in great detail a
number of important industry-standard DTDs. The fourth chapter discusses how XML
namespaces (basically a way of uniquely prefixing XML tags so that one can avoid
name clashes) help to manage XML extensibility.
XML Publishing
After these first 125 pages of pretty dry (but
nonetheless essential) stuff we finally get down to business in chapters 5 and
6, where Marchal explains how you can manipulate and display XML documents using
XSL (XML Stylesheet Language). Marchal makes it very clear
that XSL actually consists of two components, XSL Transformations (XSLT) and XSL Formatting Objects (XSLFO), and that XSL is indeed
not only important as a formatting language (allowing you to style XML
documents for display in a Web browser or on paper), but even more important as
a transformation language (allowing you to transform an XML document into
HTML or any other type of XML document).
Chapter 5 discusses these
transformation capabilities of XSL in great detail, while chapter 6 more briefly
discusses the formatting capabilities of XSL, focussing on the use of CSS
(Cascading Style Sheets, well-known from the HTML world) to
display nicely formatted XML documents in Microsoft's Internet Explorer 5.x or
Mozilla's Gecko (the future Netscape 5.0). Marchal has to limit himself to a
discussion of CSS since XSL Formatting Objects are still in the draft stage, and
little or no XML tools actually support them. This "let's stick to what actually
works" attitude typifies the whole book and is a refreshing difference with
other XML books such as The
XML Handbook by Paul Prescod, which tend to devote too much time to XML
stuff "that should work" (but doesn't since the corresponding standard is still
in a state of flux).
XML Programming
While using XSL to view and transform XML documents
already involves some programming, the real programming doesn't start until
chapters 7, 8 and 9. Chapter 7 introduces you to the parser, the most basic and
yet the most important part of any XML application. Marchal clearly explains how
the use of a parser, combined with the schema definitions in the XML DTD, saves
you a lot of work when working with XML documents or data. The author first
explains the use of the DOM (Document Object Model), an
object-based API for adressing XML data through a parser, by building a small
application (both in JavaScript and in Java) that manipulates a list of product
prices.
In chapter 8, he discusses the differences with SAX (Simple
API for XML), an event-based Java API for addressing XML data, by
building the same application using this second standard API. The code given for
these two applications is very insightful, not just because it clearly
illustrates the different parsing models behind DOM and SAX, but also because it
contains clean, object-oriented code for elegantly encapsulating the lower-level
API calls of DOM and SAX.
In the 9th chapter, the focus is no longer on reading
and parsing XML documents, but on writing XML documents. Marchal shows how using
the DOM is ideal when modifying existing XML documents, but also clearly shows
how using your own code to write XML is far more efficient when you are simply
generating new XML documents.
These chapters 7, 8 and 9, combined with the
previous chapters 5 and 6, form the real meat of the book, and it's here that
you get your money's worth: not simply concepts, but actual working code that
really does something useful. It's a pity the book doesn't contain a CD-ROM with
all the sample code, but you can go to the by Example Web site for all code examples and
additional material associated with the book.
Putting It All
Together
The final chapters
10, 11 and 12 nicely round off the book, by reviewing some of the fundamental
XML concepts you've learned in the previous chapters and illustrating their use
in a working e-commerce application. Chapter 10 discusses the importance of
using the inherent flexibility of XML correctly, by finding the right level of
abstraction that will allow your applications to use XML document/data formats
in the most effective way. You will find some basic practical guidelines here,
but for more in-depth treatment of the same subject you should also consider
reading Structuring
XML Documents by David Megginson.
Chapter 11 sets the stage for the
development of the e-commerce application, by discussing the basic concepts
behind 3-tier and n-tier applications, highlighting how XML can be used at both
the client, the middle and the server tier. For those of you who still think
that XML only has a role to play in the Web browser (the client tier), this
chapter is a real eye-opener that will get you thinking about XML in completely
new ways.
The final chapter discusses the commented source code for the
XCommerce application, a multi-merchant Web mall making extensive use of XML and
some basic Java. XCommerce is a small but realistic 3-tier e-commerce
application, illustrating the use of XML and XSL in the Web browser, Java
servlets for forms handling in the middle tier, and JDBC for data access in the
server tier. This sample application is certainly more interesting than the
rather trivial applications discussed in XML
by Example : Building E-Commerce Applications by Sean McGrath, an older book
also discussing the use of XML for e-commerce. In order to help you understand
the Java code, the book includes a short crash course on Java, but if you're
really interested in advanced XML programming using Java you'd better look at a
book like XML
and Java: Developing Web Applications by Hiroshi Maruyama et
al.
Get Started!
Anybody who is facing Web site content management
problems, who needs to implement Web-based B2B e-commerce data exchange or who
is trying to integrate enterprise applications over the Internet will have to
deal with XML sooner or later. XML is becoming an indispensable part of your
Internet programming toolkit, as is clearly evidenced by the daily announcements
of XML support in all major software tools and products. If you already know
your way around in HTML and aren't scared of a little JavaScript, this book will
get you up and running with XML in no time.
Hans C. Arents is director of consulting services for Belgium-based I.T. Works and a leading figure in the Belgian world of XML. You can find out more about him at http://www.arents.net/
|