| Introduction | xv |
Chapter 1 | XML: An Inside Look | 1 |
| XML: In the Beginning | 2 |
| What Is XML? | 3 |
| Why Is XML Such a Big Deal? | 6 |
| Document Type Definitions | 6 |
| Where to Place the DTD | 8 |
| Reading an XML Document | 10 |
| Why Are Corporations Switching to XML? | 12 |
| Web Services | 13 |
| Looking Ahead | 13 |
| Quiz | 14 |
Chapter 2 | Creating an XML Document | 17 |
| Identifying Information | 18 |
| Creating XML Markup Tags | 19 |
| Parent...Parent/Child...Child | 20 |
| Creating a Document Type Definition | 22 |
| Creating an XML Document | 23 |
| Attributes | 25 |
| Comments | 27 |
| Entities | 28 |
| Processing Instructions | 29 |
| CDATA Sections | 29 |
| Looking Ahead | 30 |
| Quiz | 31 |
Chapter 3 | Document Type Definitions | 33 |
| Types of Document Type Definition | 34 |
| External Document Type Definition | 35 |
| Shared Document Type Definition | 38 |
| Element Declarations | 40 |
| Specifying the Number of Occurrences in an Element | 41 |
| Optional Child Elements | 42 |
| Grouping Elements | 43 |
| EMPTY and ANY Elements | 45 |
| Naming Elements | 45 |
| Attribute Declarations | 46 |
| Entity Declarations | 47 |
| Looking Ahead | 47 |
| Quiz | 48 |
Chapter 4 | XML Schema | 51 |
| Inside an XML Schema | 52 |
| Document Type Definition vs. XML Schema | 53 |
| An Inside Look at an XML Schema | 55 |
| Defining Simple Elements | 56 |
| Defining Attributes | 57 |
| Facets | 58 |
| Working with Whitespace Characters | 62 |
| Complex Elements | 63 |
| Setting the Number of Occurrences | 65 |
| Looking Ahead | 66 |
| Quiz | 67 |
Chapter 5 | XLink, XPath, XPointer | 69 |
| An Inside Look at XLink | 70 |
| Speaking the XLink Language | 71 |
| XPath | 73 |
| A Closer Look at XPath | 75 |
| Predicates | 76 |
| Functions | 77 |
| XPointer | 80 |
| Looking Ahead | 80 |
| Quiz | 81 |
Chapter 6 | XSLT | 83 |
| What Is XSLT? | 84 |
| XPath and the Transformation | 84 |
| Source and Result Documents | 85 |
| XSLT in Action | 85 |
| A Closer Look at XSL Stylesheet | 87 |
| Looking Ahead | 92 |
| Quiz | 93 |
Chapter 7 | XML Parsers and Transformations | 95 |
| Parsing an XML Document | 96 |
| The Simple API for XML (SAX) | 96 |
| Components of a SAX Parser | 97 |
| The DTD Handler | 99 |
| The Document Object Model | 100 |
| Java and Parsing an XML Document | 104 |
| Looking Ahead | 105 |
| Quiz | 106 |
Chapter 8 | Really Simple Syndication (RSS) | 109 |
| What Is Really Simple Syndication (RSS)? | 110 |
| Inside an RSS Document | 110 |
| More About the channel Element | 112 |
| Communicating with the Aggregator | 114 |
| More About the item Element | 116 |
| Looking Ahead | 118 |
| Quiz | 118 |
Chapter 9 | XQuery | 121 |
| Getting Started | 122 |
| Testing Saxon-B | 122 |
| How XQuery Works | 126 |
| For, Let, and Order By Clauses | 126 |
| The Where and Return Clauses | 126 |
| A Walkthrough of an XQuery | 127 |
| Constructors | 128 |
| Conditional Statements | 131 |
| Retrieving the Value of an Attribute | 136 |
| Retrieving the Value of an Attribute and the Attribute Name | 138 |
| Functions | 141 |
| Looking Ahead | 145 |
| Quiz | 146 |
Chapter 10 | MSXML | 149 |
| What Is MSXML? | 149 |
| Getting Down and Dirty with MSXML | 150 |
| Loading a Document | 158 |
| The LoadDocument() Function | 159 |
| Adding a New Element | 161 |
| The LoadNewNode() Function | 162 |
| The InsertFirst() Method | 163 |
| The InsertLast() Method | 166 |
| The InsertBefore() Function | 168 |
| The InsertAfter() Function | 171 |
| Create a New Element Programmatically | 173 |
| Select, Extract, Delete, and Validate | 177 |
| The SelectArtist() Function-Filtering an XML Document | 177 |
| The DisplayTitles() Function | 179 |
| The DeleteNodes() Function | 180 |
| The ValidateDocument() Function | 181 |
| MSXML and XSLT | 184 |
| CD Listing | 186 |
| Summary | 186 |
| Quiz | 187 |
| Final Exam | 189 |
| Answers to Quizzes and Final Exam | 205 |
| Index | 215 |