Table of Contents
Introduction xxix
 List of Examples xxxix
 Part I: Foundations
 Chapter 1: XSLT in Context 3
 What Is XSLT? 3
 How Does XSLT Transform XML? 7
 The Place of XSLT in the XML Family 21
 The History of XSL 26
 XSLT2.0asa Language 33
 Summary 40
 Chapter 2: The XSLT Processing Model 41
 XSLT: A System Overview 41
 The XDM Tree Model 45
 The Transformation Process 67
 Error Handling 80
 Variables and Expressions 80
 Summary 88
 Chapter 3: Stylesheet Structure 89
 Changes in XSLT 2.0 90
 The Modular Structure of a Stylesheet 90
 The <xsl:stylesheet>Element 98
 The <?xml-stylesheet?>Processing Instruction 99
 Embedded Stylesheets 102
 Declarations 104
 Instructions 108
 Simplified Stylesheets 125
 Writing Portable Stylesheets 127
 Whitespace 141
 Summary 148
 Chapter 4: Stylesheets and Schemas 151
 XML Schema: An Overview 151
 Declaring Types in XSLT 161
 Validating the Source Document 165
 Validating the Result Document 170
 Validating a Temporary Document 174
 Validating Individual Elements 176
 Validating Individual Attributes 179
 The default-validation Attribute 180
 Importing Schemas 180
 Using xsi: type 181
 Nillability 182
 Summary 183
 Chapter 5: Types 185
 What Is a Type System? 185
 Changes in 2.0 186
 Sequences 187
 Atomic Values 189
 Atomic Types 191
 Schema Types and XPath Types 217
 The Type Matching Rules 219
 Static and Dynamic Type Checking 221
 Summary 224
 Part II: XSLT and XPath Reference
 Chapter 6: XSLT Elements 227
 Summary 519
 Chapter 7: XPath Fundamentals 521
 Notation 522
 Where to Start 523
 Expressions 524
 Lexical Constructs 527
 Primary Expressions 539
 Variable References 540
 Parenthesized Expressions 542
 Context Item Expressions 543
 Function Calls 544
 Conditional Expressions 551
 The XPath Evaluation Context 553
 Summary 568
 Chapter 8: XPath: Operators on Items 571
 Arithmetic Operators 571
 Value Comparisons 581
 General Comparisons 588
 Node Comparisons 593
 Boolean Expressions 594
 Summary 596
 Chapter 9: XPath: Path Expressions 599
 Examples of Path Expressions 600
 Changes in XPath 2.0 601
 Document Order and Duplicates 602
 The Binary «⁄»Operator 602
 Axis Steps 606
 Rooted Path Expressions 625
 The«⁄ ⁄»Abbreviation 626
 Combining Sets of Nodes 628
 Summary 632
 Chapter 10: XPath: Sequence Expressions 633
 The Comma Operator 634
 Numeric Ranges: The «to» Operator 636
 Filter Expressions 638
 The «for» Expression 640
 Simple Mapping Expressions 644
 The «some» and «every» Expressions 646
 Summary 651
 Chapter 11: XPath: Type Expressions 653
 Converting Atomic Values 654
 Sequence Type Descriptors 668
 The «instance of» Operator 677
 The «treat as» Operator 678
 Summary 680
 Chapter 12: XSLT Patterns 681
 Patterns and Expressions 681
 Changes in XSLT 2.0 682
 The Formal Definition 683
 An Informal Definition 685
 Conflict Resolution 686
 Matching Parentless Nodes 688
 The Syntax of Patterns 689
 Summary 708
 Chapter 13: The Function Library 709
 A Word about Naming 710
 Functions by Category 710
 Notation 712
 Code Samples 714
 Function Definitions 714
 Summary 913
 Chapter 14: Regular Expressions 915
 Branches and Pieces 916
 Quantifiers 916
 Atoms 917
 Subexpressions 918
 Back-References 918
 Character Groups 919
 Character Ranges 919
 Character Class Escapes 920
 Character Blocks 922
 Character Categories 924
 Flags 925
 Disallowed Constructs 927
 Summary 927
 Chapter 15: Serialization 929
 The XML Output Method 929
 The HTML Output Method 936
 The XHTML Output Method 939
 The Text Output Method 940
 Using the <xsl:output> declaration 940
 Character Maps 941
 Disable Output Escaping 945
 Summary 949
 Part III: Exploitation
 Chapter 16: Extensibility 953
 What Vendor Extensions Are Allowed? 954
 Extension Functions 955
 Keeping Extensions Portable 970
 Summary 971
 Chapter 17: Stylesheet Design Patterns 973
 Fill-in-the-Blanks Stylesheets 973
 Navigational Stylesheets 976
 Rule-Based Stylesheets 980
 Computational Stylesheets 985
 Summary 1000
 Chapter 18: Case Study: XMLSpec 1001
 Formatting the XML Specification 1002
 Preface 1004
 Creating the HTML Outline 1008
 Formatting the Document Header 1012
 Creating the Table of Contents 1019
 Creating Section Headers 1023
 Formatting the Text 1024
 Producing Lists 1028
 Making Cross-References 1029
 Setting Out the Production Rules 1033
 Overlay Stylesheets 1041
 Stylesheets for Other Specifications 1044
 Summary 1047
 Chapter 19: Case Study: A Family Tree 1049
 Modeling a Family Tree 1050
 Creating a Data File 1058
 Displaying the Family Tree Data 1072
 Summary 1098
 Chapter 20: Case Study: Knight’s Tour 1099
 The Problem 1099
 The Algorithm 1100
 Placing the Knight 1104
 Displaying the Final Board 1105
 Finding the Route 1106
 Running the Stylesheet 1112
 Observations 1112
 Summary 1113
 Part IV: Appendices
 Appendix A: XPath 2.0 Syntax Summary 1117
 Whitespace and Comments 1118
 Tokens 1118
 Syntax Productions 1119
 Operator Precedence 1122
 Appendix B: Error Codes 1123
 Functions and Operators (FO) 1124
 XPath Errors (XP) 1126
 XSLT Errors (XT) 1127
 Appendix C: Backward Compatibility 1139
 Stage 1: Backward-compatibility Mode 1140
 Stage2: Setting version=‘‘2.0’’ 1142
 Stage 3: Adding a Schema 1145
 Summary 1145
 Appendix D: Microsoft XSLT Processors 1147
 MSXML 1147
 System.Xml 1158
 Summary 1161
 Appendix E: JAXP: The Java API for Transformation 1163
 The JAXP Parser API 1164
 The JAXP Transformation API 1169
 Examples of JAXP Transformations 1187
 Summary 1193
 Appendix F: Saxon 1195
 Using Saxon from the Command Line 1196
 Using Saxon from a Java Application 1199
 Using Saxon from a .NET Application 1203
 Saxon Tree Models 1205
 Extensibility 1205
 Extensions 1208
 The evaluate() Extension 1210
 Summary 1214
 Appendix G: Altova 1215
 Running from within XMLSpy 1215
 Conformance 1216
 Extensions and Extensibility 1217
 The Command Line Interface 1217
 Using the API 1218
 Summary 1220
 Appendix H: Glossary 1221
 Index 1233