Next Page

XSLT Cookbook, 2nd Edition


Forget those funky robot toys that were all the rage in the '80s, XSLT (Extensible Stylesheet Transformations) is the ultimate transformer. This powerful language is expert at transforming XML documents into PDF files, HTML documents, JPEG files--virtually anything your heart desires. As useful as XSLT is, though, most people have a difficult time learning its many peculiarities. And now Version 2.0, while elegant and powerful, has only added to the confusion.

XSLT Cookbook, Second Edition wants to set the record straight. It helps you sharpen your programming skills and overall understanding of XSLT through a collection of detailed recipes. Each recipe breaks down a specific problem into manageable chunks, giving you an easy-to-grasp roadmap for integrating XSLT with your data and applications. No other XSLT book around employs this practical problem-solution-discussion format.

In addition to offering code recipes for solving everyday problems with XSLT 1.0, this new edition shows you how to leverage the improvements found in XSLT 2.0, such as how to simplify the string manipulation and date/time conversion processes. The book also covers XPath 2.0, a critical companion standard, as well as topics ranging from basic transformations to complex sorting and linking. It even explores extension functions on a variety of different XSLT processors and shows ways to combine multiple documents using XSLT. Code examples add a real-world dimension to each technique.

Whether you're just starting out in XSLT or looking for advanced techniques, you'll find the level of information you need in XSLT Cookbook, Second Edition.


Table of Contents  | Index

      Structure of This Book
      Conventions Used in This Book
        Chapter 1.  XPath
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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
      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

  Next Page