| Acknowledgments | xvii |
| Introduction | xix |
Chapter 1 | An XML Primer | 1 |
| A Brief History of XML | 2 |
| Anatomy of an XML Document | 5 |
| Internationalization Using XML | 10 |
| XML As a Meta-Language | 10 |
| W3C Standards Related to XML | 13 |
| Summary | 19 |
Chapter 2 | An Introduction to XSLT | 21 |
| What Is XSLT? | 22 |
| The Search for Structure and Meaning | 24 |
| XSLT Feature Overview | 34 |
| How XSLT Works | 40 |
| Summary | 45 |
Chapter 3 | XML and XSLT Applications | 47 |
| The Power of XML | 48 |
| Extending XML: The Extensible Stylesheet Language for Transformations | 55 |
| The Structure of an XML/XSLT Application | 57 |
| Summary | 60 |
Chapter 4 | The Structure of an XSLT Stylesheet | 61 |
| General Stylesheet Structure | 62 |
| XSLT Version and Forwards-Compatible Mode | 69 |
| Top-Level Stylesheet Elements | 71 |
| Embedding Stylesheets | 79 |
| Summary | 81 |
Chapter 5 | Expressions | 83 |
| XSLT and XPath Expression Overview | 84 |
| Coding XPath Expressions | 90 |
| XPath Functions | 109 |
| Summary | 112 |
Chapter 6 | Template Rules | 113 |
| XSLT Processing Model | 114 |
| Defining and Applying Template Rules | 114 |
| Applying Conflict Resolution Template Rules | 118 |
| Overriding Template Rules | 119 |
| Using Modes | 121 |
| Using Built-in Template Rules | 123 |
| Using Named Templates | 125 |
| Summary | 127 |
Chapter 7 | Creating the XSLT Result Tree | 129 |
| What Comes Out of an XSLT Stylesheet? | 130 |
| Creating the Result Tree | 132 |
| Performing Conditional Processing | 150 |
| Summary | 157 |
Chapter 8 | Variables and Parameters | 159 |
| Variables and Parameters Defined | 160 |
| Variable Data Types | 162 |
| Setting Default Values | 165 |
| Global and Local Variables | 167 |
| Use of xsl:param | 173 |
| Summary | 176 |
Chapter 9 | Creating Stylesheet Output | 177 |
| Numbering Output | 178 |
| Introducing xsl:output | 191 |
| Generating Informative or Exception Output with xsl:message | 198 |
| Summary | 199 |
Chapter 10 | XSL/XSLT Power Programming | 201 |
| Sorting | 202 |
| Extensions | 209 |
| Fallback | 211 |
| Keys | 214 |
| Number Formatting | 218 |
| Additional Functions | 220 |
| Summary | 223 |
Chapter 11 | Practical XSLT Examples | 225 |
| Real-World XSLT Applications | 226 |
| XSLT Application Examples | 228 |
| Summary | 266 |
Chapter 12 | XSLT in the Enterprise | 267 |
| Client-Side XSLT | 268 |
| Processing Syndicated Content | 272 |
| Building Presentation-Independent Applications | 272 |
| B2B Integration and EAI Using XSLT | 282 |
| Deployment Issues | 289 |
| Summary | 291 |
Chapter 13 | Programming Tools and Technologies | 293 |
| Programming with XSLT | 294 |
| Programming Languages and XSLT | 297 |
| XSLT Programming Models | 303 |
| Summary | 316 |
Appendix A | XSLT2 and XPath2: The Evolving Standards | 317 |
| How XSLT 1.1 Differs from XSLT 1.0 | 318 |
| Major Changes from XSLT 1.1 to 2.0 | 320 |
Appendix B | Review of the W3C XSL Working Group | 321 |
Appendix C | XSL and XSLT Resources | 325 |
| Glossary | 329 |
| Index | 335 |