| About the Authors | p. ix |
| About the Technical Reviewer | p. x |
| Acknowledgments | p. xi |
| Introduction | p. xiii |
| Welcome to XML | p. 1 |
| What Is XML? | p. 2 |
| XML Examples | p. 15 |
| XSLT Programs and XPath Expressions | p. 20 |
| Stylesheet Languages and Browsers | p. 30 |
| Conclusion | p. 39 |
| Well-Formed Documents and Namespaces | p. 41 |
| HTML, XML, and XHTML | p. 41 |
| XML Documents Without a DTD | p. 48 |
| Names and Namespaces | p. 52 |
| XLink Attributes and XLink Graphs | p. 60 |
| An XLink Example | p. 65 |
| Namespace Controversies and RDDL | p. 74 |
| Conclusion | p. 79 |
| DTDs and Validation | p. 81 |
| DTDs and Validation | p. 81 |
| DTD Syntax and Examples | p. 88 |
| General and Parameter Entities | p. 93 |
| DTD Modification and Reuse | p. 102 |
| XHTML Modularization and XHTML Basic | p. 107 |
| What's Wrong with the DTD? | p. 120 |
| The DTD, the XML Document, and the Infoset | p. 120 |
| Conclusion | p. 123 |
| XML Parsing | p. 125 |
| Basic SAX Programming | p. 126 |
| SAX Filters | p. 143 |
| SAX Parsing for Non-XML Data | p. 157 |
| DOM Programming | p. 169 |
| Traversal Interfaces | p. 182 |
| Book Picker as DOM Builder | p. 186 |
| Conclusion | p. 193 |
| XPath, XSLT, and XLink Processing | p. 195 |
| An XLink Application: Creating and Using a Linkbase | p. 196 |
| The XPath Language and Data Model | p. 198 |
| XPath Data Model and the Node-Set Data Type | p. 208 |
| Path Expressions | p. 214 |
| XSLT Processing Model | p. 223 |
| Parameters, Variables, and Result Tree Fragments | p. 234 |
| Named Templates and Recursion | p. 236 |
| The Code of the XLink Application | p. 242 |
| Conclusion | p. 253 |
| More XSLT: Algorithms and Efficiency | p. 255 |
| Specific Patterns and Timing | p. 256 |
| Distinct Nodes and Keys | p. 259 |
| Grouping and Tables | p. 263 |
| Converting Flat to Hierarchical Structure | p. 273 |
| List Processing and Recursion Depth | p. 280 |
| Generating Large Data Sets | p. 284 |
| Extension Functions | p. 293 |
| The Longest Verse, Revisited | p. 297 |
| Conclusion | p. 307 |
| XML Repository | p. 309 |
| The Structure of XML Data | p. 310 |
| The Structure of the Database | p. 319 |
| The Structure of the Application | p. 320 |
| Driver, Database, Connection, and Statement | p. 331 |
| Query Implementations 1: UPDATE Queries | p. 339 |
| Query Implementations 2: Refset Actions | p. 353 |
| Conclusion | p. 358 |
| RELAX NG and XML Schema | p. 361 |
| RELAX NG History and Current Condition | p. 362 |
| RELAX NG Overview | p. 369 |
| Modularity and Reuse | p. 383 |
| The datatypeLibrary and XML Schema Data Types | p. 392 |
| XML Schema Part 1: Structures | p. 401 |
| Conclusion | p. 424 |
| Web Services | p. 425 |
| What's a Web Service? | p. 425 |
| An Example | p. 431 |
| Client Variations | p. 448 |
| Overview of SOAP 1.2 | p. 456 |
| XML Encoding and RPC Conventions | p. 462 |
| The Office Equipment Web Service | p. 467 |
| Publish-Find-Bind with UDDI | p. 479 |
| Conclusion | p. 489 |
| Installation Guide | p. 491 |
| Version Updates | p. 492 |
| The Java Framework | p. 492 |
| The Windows Framework | p. 495 |
| If Space Is at a Premium | p. 498 |
| Database Connectivity | p. 498 |
| Large Data Files | p. 499 |
| Web Services Examples (Chapter 9) | p. 499 |
| Additional Platforms | p. 500 |
| Web Applications | p. 501 |
| General Framework | p. 501 |
| CGI | p. 502 |
| Improvements to Backend Processing | p. 503 |
| ASPs | p. 503 |
| Java Servlets and DSPs | p. 505 |
| HTTP Protocol | p. 509 |
| URIs, URLs, and URNs | p. 509 |
| Overall Operation | p. 510 |
| Request Commands (Methods) | p. 513 |
| Server Response Codes | p. 514 |
| Online Resources | p. 517 |
| Standards | p. 517 |
| Sources of Information | p. 519 |
| Sources of Software | p. 522 |
| Keep Looking | p. 523 |
| Troubleshooting in JSP | p. 525 |
| Looking at Servlet Code for JSP | p. 525 |
| Error Pages | p. 527 |
| Writing Modular DSPs | p. 529 |
| Classpath Problems in Dava/DSP | p. 530 |
| Index | p. 531 |
| Table of Contents provided by Publisher. All Rights Reserved. |