Two APIs discussed in the second edition - JDOM and JAXB - saw important changes between the prerelease versions and their eventual final releases. These changes are covered in this latest edition. This book is organized into three sections. The first section, composed of Chapters 1 and 2, is a basic introduction to XML and related standards. However, the introduction is fast-paced, and if you have not seen XML before it probably won't be enough. The second part of the book - Chapters 3 through 11 - explains a wide variety of APIs for creating, manipulating, outputting, and pretty much doing anything else to XML documents. If you already know XML and Java, these chapters are excellent. If not, again, you are going to have difficulty as the material is fast paced. The last section - Chapters 12 and 13 - describes two important applications for XML. Chapter 14 stands alone as a chapter of predictions about the future of XML. The following is a description of the book in the context of the table of contents:
Chapter 1, Introduction, begins with the basics of XML. If you've never used XML before, this chapter will give you all the information you need to understand the rest of the book. It briefly touches on the changes between XML 1.0 and 1.1 before introducing XSLT and XPath.
Chapter 2, Constraints, covers three ways of defining the structure of XML documents: DTDs, W3C XML Schemas, and RELAX NG schemas. It covers how to use these standards to define a structure and how to ensure that a document matches that definition. It also covers how to convert between the various constraint document types.
Chapter 3, SAX, the Simple API for XML (SAX) is introduced in this chapter. The parsing lifecycle is explained, and the events that can be caught by SAX and used by developers are demonstrated via code examples.
Chapter 4, Advanced SAX, covers less-used but still powerful items in SAX. You'll learn how to use SAX features and properties to alter the behavior of the SAX parser, use XML filters to chain callback behavior, use XML writers to output XML with SAX, and look at some of the less commonly used SAX handlers like LexicalHandler and DeclHandler.
Chapter 5, DOM, unlike SAX has its origins in the World Wide Web Consortium. Whereas SAX is public domain software, DOM is a standard just like the actual XML specification. The DOM is designed to represent the content and model of XML documents across all programming languages and tools. In this chapter you learn DOM basics, find out what is in the current specification (DOM Level 3), and how to read and write DOM trees.
Chapter 6, DOM Modules, is about the various Level 2 and Level 3 DOM modules like Traversal, Range, Events, Style, HTML, Load and Save, and Validation.
Chapter 7, JAXP, examines the Java API for XML Processing (JAXP), including the XPath and Validation APIs introduced with JAXP 1.3. JAXP was initially a very small API that handled only parsing. The latest version of JAXP provides everything in SAX and DOM, plus some extras, and JAXP makes vendor neutrality much easier than using DOM or SAX directly.
Chapter 8, Pull Parsing With StAX, concerns The Streaming API for XML (StAX), which is the newest standard Java XML API. You'll learn how to use StAX and how it compares to both SAX and DOM. There is also a brief look at a precursor to StAX named XMLPull, which is still in use.
Chapter 9, JDOM, examines a Java-specific object model API. JDOM provides a means of accessing an XML document within Java through a tree structure, and in that respect is somewhat similar to the DOM.
Chapter 10, dom4j, examines another Java-specific object model API, dom4j. This chapter compares it to both JDOM and DOM. Also examined are features unique to dom4j, like its object-orientated transformation API.
Chapter 11, Data Binding with JAXB, talks about how with data binding, your application code does not concern itself with the details of XML documents, only a Java object model. Sun has developed a standard for XML data binding: the Java Architecture for XML Binding (JAXB). In this chapter, you'll learn about JAXB 1.0 and 2.0, as well as the general basics of data binding and when its use is appropriate.
Chapter 12, Content Syndication with RSS, covers using XML documents to syndicate content. Specifically, the RSS standards are examined along with a brief discussion of Atom. The creation and reading of RSS feeds using other APIs are discussed as well as an RSS-specific API named ROME. A highlight is the creation of your own podcast feed for submission to Apple's iTunes Podcast directory using this tool.
Chapter 13, XML As Presentation, looks at a variety of techniques for using XML in visual portion of web applications. The chapter shows how XML is a key component of the dynamic web application techniques that are becoming more common.
Chapter 14, Looking Forward, provides some brief overviews of several XML technologies. Included topics are XML appliances, XQuery, and Fast Infoset.
Appendix, SAX Features and Properties, details the features and properties available to SAX 2.0 parser implementations.
A good companion to this book is "Processing XML with Java(TM): A Guide to SAX, DOM, JDOM, JAXP, and TrAX" by Elliot Rusty Harold. The book is a little older, so standards have changed, but it does a good job of explaining things at a slower pace than this book. This book is better for the newer standards and applications. If you are working with XML and Java, you should probably have both books.