| | Copyright |
| | Preface |
| | | Structure of This Book |
| | | Conventions Used in This Book |
| | | Using Code Examples |
| | | Safari Enabled |
| | | How to Contact Us |
| | | Acknowledgments |
| | Chapter 1. XPath |
| | | Introduction |
| | | Recipe 1.1. Effectively Using Axes |
| | | Recipe 1.2. Filtering Nodes |
| | | Recipe 1.3. Working with Sequences |
| | | Recipe 1.4. Shrinking Conditional Code with If Expressions |
| | | Recipe 1.5. Eliminating Recursion with for Expressions |
| | | Recipe 1.6. Taming Complex Logic Using Quantifiers |
| | | Recipe 1.7. Using Set Operations |
| | | Recipe 1.8. Using Node Comparisons |
| | | Recipe 1.9. Coping with XPath 2.0's Extended Type System |
| | | Recipe 1.10. Exploiting XPath 2.0's Extended Type System |
| | Chapter 2. Strings |
| | | Introduction |
| | | Recipe 2.1. Testing If a String Ends with Another String |
| | | Recipe 2.2. Finding the Position of a Substring |
| | | Recipe 2.3. Removing Specific Characters from a String |
| | | Recipe 2.4. Finding Substrings from the End of a String |
| | | Recipe 2.5. Duplicating a String N Times |
| | | Recipe 2.6. Reversing a String |
| | | Recipe 2.7. Replacing Text |
| | | Recipe 2.8. Converting Case |
| | | Recipe 2.9. Tokenizing a String |
| | | Recipe 2.10. Making Do Without Regular Expressions |
| | | Recipe 2.11. Exploiting Regular Expressions |
| | | Recipe 2.12. Using the EXSLT String Extensions |
| | Chapter 3. Numbers and Math |
| | | Introduction |
| | | Recipe 3.1. Formatting Numbers |
| | | Recipe 3.2. Rounding Numbers to a Specified Precision |
| | | Recipe 3.3. Converting from Roman Numerals to Numbers |
| | | Recipe 3.4. Converting from One Base to Another |
| | | Recipe 3.5. Implementing Common Math Functions |
| | | Recipe 3.6. Computing Sums and Products |
| | | Recipe 3.7. Finding Minimums and Maximums |
| | | Recipe 3.8. Computing Statistical Functions |
| | | Recipe 3.9. Computing Combinatorial Functions |
| | | Recipe 3.10. Testing Bits |
| | Chapter 4. Dates and Times |
| | | Introduction |
| | | Recipe 4.1. Calculating the Day of the Week |
| | | Recipe 4.2. Determining the Last Day of the Month |
| | | Recipe 4.3. Getting Names for Days and Months |
| | | Recipe 4.4. Calculating Julian and Absolute Day Numbers from a Specified Date |
| | | Recipe 4.5. Calculating the Week Number for aSpecified Date |
| | | Recipe 4.6. Working with the Julian Calendar |
| | | Recipe 4.7. Working with the ISO Calendar |
| | | Recipe 4.8. Working with the Islamic Calendar |
| | | Recipe 4.9. Working with the Hebrew Calendar |
| | | Recipe 4.10. Formatting Dates and Times |
| | | Recipe 4.11. Determining Secular and Religious Holidays |
| | Chapter 5. Selecting and Traversing |
| | | Introduction |
| | | Recipe 5.1. Ignoring Duplicate Elements |
| | | Recipe 5.2. Selecting All but a Specific Element |
| | | Recipe 5.3. Selecting Nodes by Context |
| | | Recipe 5.4. Performing a Preorder Traversal |
| | | Recipe 5.5. Performing a Postorder Traversal |
| | | Recipe 5.6. Performing an In-Order Traversal |
| | | Recipe 5.7. Performing a Level-Order Traversal |
| | | Recipe 5.8. Processing Nodes by Position |
| | Chapter 6. Exploiting XSLT 2.0 |
| | | Introduction |
| | | Recipe 6.1. Convert Simple Named Templates to XSLT Functions |
| | | Recipe 6.2. Prefer for-each-group over Muenchian Method of Grouping |
| | | Recipe 6.3. Modularizing and Modes |
| | | Recipe 6.4. Using Types for Safety and Precision |
| | | Recipe 6.5. Avoiding 1.0 to 2.0 Porting Pitfalls |
| | | Recipe 6.6. Emulating Object-Oriented Reuse and Design Patterns |
| | | Recipe 6.7. Processing Unstructured Text with Regular Expressions |
| | | Recipe 6.8. Solving Difficult Serialization Problems with Character Maps |
| | | Recipe 6.9. Outputting Multiple Documents |
| | | Recipe 6.10. Handling String Literals Containing Quote Characters |
| | | Recipe 6.11. Understanding the New Capabilities of Old XSLT 1.0 Features |
| | Chapter 7. XML to Text |
| | | Introduction |
| | | Recipe 7.1. Dealing with Whitespace |
| | | Recipe 7.2. Exporting XML to Delimited Data |
| | | Recipe 7.3. Creating a Columnar Report |
| | | Recipe 7.4. Displaying a Hierarchy |
| | | Recipe 7.5. Numbering Textual Output |
| | | Recipe 7.6. Wrapping Text to a Specified Width and Alignment |
| | Chapter 8. XML to XML |
| | | Introduction |
| | | Recipe 8.1. Converting Attributes to Elements |
| | | Recipe 8.2. Converting Elements to Attributes |
| | | Recipe 8.3. Renaming Elements or Attributes |
| | | Recipe 8.4. Merging Documents with Identical Schema |
| | | Recipe 8.5. Merging Documents with Unlike Schema |
| | | Recipe 8.6. Splitting Documents |
| | | Recipe 8.7. Flattening an XML Hierarchy |
| | | Recipe 8.8. Deepening an XML Hierarchy |
| | | Recipe 8.9. Reorganizing an XML Hierarchy |
| | Chapter 9. Querying XML |
| | | Introduction |
| | | Recipe 9.1. Performing Set Operations on Node Sets |
| | | Recipe 9.2. Performing Set Operations on Node Sets Using Value Semantics |
| | | Recipe 9.3. Determining Set Equality by Value |
| | | Recipe 9.4. Performing Structure-Preserving Queries |
| | | Recipe 9.5. Joins |
| | | Recipe 9.6. Implementing the W3C XML Query-UseCases in XSLT |
| | Chapter 10. XML to HTML |
| | | Introduction |
| | | Recipe 10.1. Using XSLT as a Styling Language |
| | | Recipe 10.2. Creating Hyperlinked Documents |
| | | Recipe 10.3. Creating HTML Tables |
| | | Recipe 10.4. Creating Frames |
| | | Recipe 10.5. Creating Data-Driven Stylesheets |
| | | Recipe 10.6. Creating a Self-Contained HTML Transformation |
| | | Recipe 10.7. Populating a Form |
| | Chapter 11. XML to SVG |
| | | Introduction |
| | | Recipe 11.1. Transforming an Existing Boilerplate SVG |
| | | Recipe 11.2. Creating Reusable SVG Generation Utilities for Graphs and Charts |
| | | Recipe 11.3. Creating a Tree Diagram |
| | | Recipe 11.4. Creating Interactive SVG-Enabled Web Pages |
| | Chapter 12. Code Generation |
| | | Introduction |
| | | Recipe 12.1. Generating Constant Definitions |
| | | Recipe 12.2. Generating Switching Code |
| | | Recipe 12.3. Generating Message-Handling Stub Code |
| | | Recipe 12.4. Generating Data Wrappers |
| | | Recipe 12.5. Generating Pretty Printers |
| | | Recipe 12.6. Generating a Test Data-Entry Web Client |
| | | Recipe 12.7. Generating Test-Entry Web CGI |
| | | Recipe 12.8. Generating Code from UML Models via XMI |
| | | Recipe 12.9. Generating XSLT from XSLT |
| | Chapter 13. Vertical XSLT Application Recipes |
| | | Introduction |
| | | Recipe 13.1. Converting Visio VDX Documents to SVG |
| | | Recipe 13.2. Working with Excel XML Spreadsheets |
| | | Recipe 13.3. Generating XTM Topic Maps from UML Modelsvia XMI |
| | | Recipe 13.4. Generating Web Sites from XTM Topic Maps |
| | | Recipe 13.5. Serving SOAP Documentation from WSDL |
| | Chapter 14. Extending and Embedding XSLT |
| | | Introduction |
| | | Recipe 14.1. Saxon Extension Functions |
| | | Recipe 14.2. Saxon Extension Elements |
| | | Recipe 14.3. Xalan-Java 2 Extension Functions |
| | | Recipe 14.4. Java Extension Function Using the Class Format Namespace |
| | | Recipe 14.5. Java Extension Function Using the Package Format Namespace |
| | | Recipe 14.6. Java Extension Function Using the Java Format Namespace |
| | | Recipe 14.7. Scripting Extension Function Using Inline Script Code |
| | | Recipe 14.8. Xalan-Java 2 Extension Elements |
| | | Recipe 14.9. Java Extension Element |
| | | Recipe 14.10. Scripting Extension Elements |
| | | Recipe 14.11. MSXML Extension Functions |
| | | Recipe 14.12. Using Saxon's and Xalan's Native Extensions |
| | | Recipe 14.13. Extending XSLT with JavaScript |
| | | Recipe 14.14. Adding Extension Functions Using Java |
| | | Recipe 14.15. Adding Extension Elements Using Java |
| | | Recipe 14.16. Using XSLT from Perl |
| | | Recipe 14.17. Using XSLT from Java |
| | Chapter 15. Testing and Debugging |
| | | Introduction |
| | | Recipe 15.1. Using xsl:message Effectively |
| | | Recipe 15.2. Tracing the Flow of Your Stylesheet Through Its Input Document |
| | | Recipe 15.3. Automating the Insertion of Debug Output |
| | | Recipe 15.4. Including Embedded Unit Test Data in Utility Stylesheets |
| | | Recipe 15.5. Structuring Unit Tests |
| | | Recipe 15.6. Testing Boundary and Error Conditions |
| | Chapter 16. Generic and Functional Programming |
| | | Introduction |
| | | Recipe 16.1. Creating Polymorphic XSLT |
| | | Recipe 16.2. Creating Generic Element Aggregation Functions |
| | | Recipe 16.3. Creating Generic Bounded Aggregation Functions |
| | | Recipe 16.4. Creating Generic Mapping Functions |
| | | Recipe 16.5. Creating Generic Node-Set Generators |
| | Colophon |
| | Index |