| Credits | p. vii |
| Preface | p. xiii |
| Looking at XML Documents | p. 1 |
| Read an XML Document | p. 1 |
| Display an XML Document in a Web Browser | p. 6 |
| Apply Style to an XML Document with CSS | p. 8 |
| Use Character and Entity References | p. 11 |
| Examine XML Documents in Text Editors | p. 14 |
| Explore XML Documents in Graphical Editors | p. 17 |
| Choose Tools for Creating an XML Vocabulary | p. 21 |
| Test XML Documents Online | p. 25 |
| Test XML Documents from the Command Line | p. 28 |
| Run Java Programs that Process XML | p. 33 |
| Creating XML Documents | p. 39 |
| Edit XML Documents with oXygen | p. 39 |
| Edit XML Documents with Emacs and nXML | p. 41 |
| Edit XML with Vim | p. 47 |
| Edit XML Documents with Microsoft Word 2003 | p. 54 |
| Work with XML in Microsoft Excel 2003 | p. 59 |
| Work with XML in Microsoft Access 2003 | p. 62 |
| Convert Microsoft Office Files, Old or New, to XML | p. 65 |
| Create an XML Document from a Text File with xmlspy | p. 67 |
| Convert Text to XML with Uphill | p. 70 |
| Create Well-Formed XML with Minimal Manual Tagging Using an SGML Parser | p. 75 |
| Create an XML Document from a CSV File | p. 79 |
| Convert an HTML Document to XHTML with HTML Tidy | p. 82 |
| Transform Documents with XQuery | p. 85 |
| Execute an XQuery with Saxon | p. 90 |
| Include Text and Documents with Entities | p. 94 |
| Include External Documents with XInclude | p. 97 |
| Encode XML Documents | p. 100 |
| Explore XLink and XML | p. 105 |
| What's the Diff? Diff XML Documents | p. 109 |
| Look at XML Documents Through the Lens of the XML Information Set | p. 114 |
| Transforming XML Documents | p. 117 |
| Understand the Anatomy of an XSLT Stylesheet | p. 117 |
| Transform an XML Document with a Command-Line Processor | p. 119 |
| Transform an XML Document Within a Graphical Editor | p. 125 |
| Analyze Nodes with TreeViewer | p. 130 |
| Explore a Document Tree with the xmllint Shell | p. 133 |
| View Documents as Tables Using Generic CSS or XSLT | p. 136 |
| Generate an XSLT Identity Stylesheet with Relaxer | p. 141 |
| Pretty-Print XML Using a Generic Identity Stylesheet and Xalan | p. 144 |
| Create a Text File from an XML Document | p. 146 |
| Convert Attributes to Elements and Elements to Attributes | p. 149 |
| Convert XML to CSV | p. 153 |
| Create and Process SpreadsheetML | p. 156 |
| Choose Your Output Format in XSLT | p. 169 |
| Transform Your iTunes Library File | p. 171 |
| Generate Multiple Output Documents with XSLT 2.0 | p. 176 |
| Generate XML from MySQL | p. 179 |
| Generate PDF Documents from XML and CSS | p. 184 |
| Process XML Documents with XSL-FO and FOP | p. 185 |
| Process HTML with XSLT Using TagSoup | p. 190 |
| Build Results with Literal Result and Instruction Elements | p. 191 |
| Write Push and Pull Stylesheets | p. 196 |
| Perform Math with XSLT | p. 197 |
| Transform XML Documents with grep and sed | p. 200 |
| Generate SVG with XSLT | p. 205 |
| Dither Scatterplots with XSLT and SVG | p. 209 |
| Use Lookup Tables with XSLT to Translate FIPS Codes | p. 216 |
| Grouping in XSLT 1.0 and 2.0 | p. 221 |
| Use EXSLT Extensions | p. 228 |
| XML Vocabularies | p. 234 |
| Use XML Namespaces in an XML Vocabulary | p. 234 |
| Create an RDDL Document | p. 237 |
| Create and Validate an XHTML 1.0 Document | p. 241 |
| Create Books, Technical Manuals, and Papers in XML with DocBook | p. 244 |
| Create a SOAP 1.2 Document | p. 247 |
| Identify Yourself with FOAF | p. 250 |
| Unravel the OpenOffice File Format | p. 258 |
| Render Graphics with SVG | p. 264 |
| Use XForms in Your XML Documents | p. 268 |
| Defining XML Vocabularies with Schema Languages | p. 276 |
| Validate an XML Document with a DTD | p. 277 |
| Validate an XML Document with XML Schema | p. 285 |
| Validate Multiple Documents Against an XML Schema at Once | p. 292 |
| Check the Integrity of a W3C Schema | p. 294 |
| Validate an XML Document with RELAX NG | p. 297 |
| Create a DTD from an Instance | p. 305 |
| Create an XML Schema Document from an Instance or DTD | p. 310 |
| Create a RELAX NG Schema from an Instance | p. 315 |
| Convert a RELAX NG Schema to XML Schema | p. 321 |
| Use RELAX NG and Schematron Together to Validate Business Rules | p. 323 |
| Use RELAX NG to Generate DTD Customizations | p. 329 |
| Generate Instances Based on Schemas | p. 335 |
| RSS and Atom | p. 339 |
| Subscribe to RSS Feeds | p. 339 |
| Create an RSS 0.91 Document | p. 343 |
| Create an RSS 1.0 Document | p. 346 |
| Create an RSS 2.0 Document | p. 348 |
| Create an Atom Document | p. 350 |
| Validate RSS and Atom Documents | p. 353 |
| Create RSS with XML::RSS | p. 355 |
| Syndicate Content with Movable Type | p. 360 |
| Post RSS Headlines on Your Site | p. 365 |
| Create RSS 0.91 Feeds from Google | p. 368 |
| Syndicate a List of Books from Amazon with RSS and ASP | p. 371 |
| Advanced XML Hacks | p. 378 |
| Pipeline XML with Ant | p. 378 |
| Use Elements Instead of Entities to Avoid the "amp Explosion Problem" | p. 386 |
| Use Cocoon to Create a Well-Formed View of a Web Page, Then Scrape It for Data | p. 390 |
| From Wiki to XML, Through SGML | p. 398 |
| Create Well-Formed XML with JavaScript | p. 406 |
| Inspect and Edit XML Documents with the Document Object Model | p. 414 |
| Processing XML with SAX | p. 421 |
| Process XML with C# | p. 426 |
| Generate Code from XML | p. 434 |
| Create Well-Formed XML with Genx | p. 442 |
| Index | p. 449 |
| Table of Contents provided by Ingram. All Rights Reserved. |