You are previewing Beginning XSLT and XPath: Transforming XML Documents and Data.
O'Reilly logo
Beginning XSLT and XPath: Transforming XML Documents and Data

Book Description

Provides the basic education in the XSLT processing model that developers have requested

The growth of XML content management applications is boosting the demand for XSLT and XPath skills. This beginning Wrox book provides a firm foundation in the XSLT processing model, giving developers an important skillset.

If, like many developers, you've had trouble grasping the XSLT processing model, you'll appreciate how this book focuses specifically on what you need to know. XSLT examples address the often-requested processing steps for typical XML document and data vocabularies. You will see exactly how XSLT relies on XPath, and how the processing model differs from most programming languages. A case study demonstrates how to build a static Web site using XSLT 2.0 elements and XPath 2.0 functions.

  • Explains XSLT and XPath, covering both version 1.0 and 2.0

  • Covers using templates, control and branching, variable and parameters, sorting and grouping, and using modular stylesheets

  • Also examines strings, dates, and numbers; working with multiple documents and text; generating identifiers; and testing and documentation

  • All topics contain incremental code examples

  • Addresses the much-requested processing steps for typical XML document and data vocabularies, including how the processing model differs from most programming languages

Beginning XSLT and XPath: Transforming XML Documents and Data is the essential guide you need to thoroughly understand the important XSLT processing model.

Note: CD-ROM/DVD and other supplementary materials are not included as part of eBook file.

Table of Contents

  1. Copyright
  2. About the Author
  3. Credits
  4. Introduction
    1. Who This Book Is For
    2. XSLT in Outline
      1. XSLT Is Different
      2. Importance of XPath Language
        1. Node Trees
      3. Processing Overview
      4. About the XSLT 2.0 Schema
        1. Declarations
        2. Instructions
    3. What You Need to Use This Book
      1. Choosing a Processor
      2. Interface Options
    4. How This Book Is Structured
    5. Conventions
    6. Source Code
    7. Errata
    8. p2p.wrox.com
  5. 1. First Steps with XSLT
    1. 1.1. Transforming an XML Document to a Web Page
      1. 1.1.1. Using a Browser
        1. 1.1.1.1. Built-in Rules
        2. 1.1.1.2. Defining an Output Method
        3. 1.1.1.3. Main Template
        4. 1.1.1.4. Literal Result Elements
        5. 1.1.1.5. Selecting Source Content
        6. 1.1.1.6. Processing Specific Source Elements
        7. 1.1.1.7. Copying Content
      2. 1.1.2. Transforming Locally
        1. 1.1.2.1. Using the Command Line
    2. 1.2. Transforming XML Data to XML
      1. 1.2.1. Atom and RSS Elements
      2. 1.2.2. Developing the Stylesheet
        1. 1.2.2.1. Preliminaries
        2. 1.2.2.2. Specifying Attributes
        3. 1.2.2.3. Completing the Feed Elements
        4. 1.2.2.4. Item Listing
        5. 1.2.2.5. Entry Elements
        6. 1.2.2.6. RSS 1.0 Results
    3. 1.3. Summary
  6. 2. Introducing XPath
    1. 2.1. Nodes
      1. 2.1.1. Node Types
      2. 2.1.2. Node Properties
    2. 2.2. Data Model
    3. 2.3. Path Expressions
      1. 2.3.1. Using an XPath Analyzer
      2. 2.3.2. Axes
      3. 2.3.3. Node Tests
        1. 2.3.3.1. Name Tests
        2. 2.3.3.2. Type Tests
      4. 2.3.4. Predicates
      5. 2.3.5. Operators
        1. 2.3.5.1. Arithmetic
        2. 2.3.5.2. Value Comparison
        3. 2.3.5.3. General Comparison
        4. 2.3.5.4. Boolean Expressions
        5. 2.3.5.5. Combining Node Sets
    4. 2.4. XPath Functions
      1. 2.4.1. Strings
        1. 2.4.1.1. Concatenation
        2. 2.4.1.2. Substrings
      2. 2.4.2. Dates, Times, and Durations
        1. 2.4.2.1. Contextual Dates
        2. 2.4.2.2. Formatting
        3. 2.4.2.3. Durations
      3. 2.4.3. Nodes and Documents
        1. 2.4.3.1. Node Properties
        2. 2.4.3.2. Counting and Position
        3. 2.4.3.3. Documents
      4. 2.4.4. Numbers
    5. 2.5. Summary
    6. 2.6. Exercises
  7. 3. Templates, Variables, and Parameters
    1. 3.1. About Templates
    2. 3.2. Template Rules
      1. 3.2.1. Invoking a Rule
      2. 3.2.2. Using Modes
      3. 3.2.3. Setting Priorities
      4. 3.2.4. Built-in Rules
    3. 3.3. Named Templates
    4. 3.4. Variables
    5. 3.5. Parameters
      1. 3.5.1. Global Parameters
      2. 3.5.2. Template Parameters
        1. 3.5.2.1. Tunnel Parameters
    6. 3.6. Summary
    7. 3.7. Exercises
  8. 4. Using Logic
    1. 4.1. Conditional Processing
      1. 4.1.1. A Simple Choice
      2. 4.1.2. Multiple Choices
      3. 4.1.3. Using XPath for Conditional Tests
    2. 4.2. Iteration
      1. 4.2.1. Using Attribute Sets
      2. 4.2.2. Monitoring the Context
    3. 4.3. Processing XML Code
    4. 4.4. Summary
    5. 4.5. Exercises
  9. 5. Sorting and Grouping
    1. 5.1. Sorting Content
      1. 5.1.1.
        1. 5.1.1.1. Datatypes
        2. 5.1.1.2. Language Settings
      2. 5.1.2. Perform a Sort
    2. 5.2. Grouping
      1. 5.2.1. Common Values
      2. 5.2.2. Adjacent Items
      3. 5.2.3. Starting and Ending Conditions
        1. 5.2.3.1. Starting
        2. 5.2.3.2. Ending
    3. 5.3. Summary
    4. 5.4. Exercises
  10. 6. Strings, Numbers, Dates, and Times
    1. 6.1. String Processing
      1. 6.1.1. About Collations
      2. 6.1.2. General Functions
      3. 6.1.3. Codepoints
      4. 6.1.4. Comparison
      5. 6.1.5. Concatenation
      6. 6.1.6. Simple Substrings
      7. 6.1.7. Using Regular Expressions
        1. 6.1.7.1. Expression Basics
        2. 6.1.7.2. Matching
        3. 6.1.7.3. Tokenizing
        4. 6.1.7.4. Replacing
      8. 6.1.8. Normalizing Values
        1. 6.1.8.1. Whitespace
        2. 6.1.8.2. Unicode Values
      9. 6.1.9. Escaping URIs
    2. 6.2. Numbers
      1. 6.2.1. Generating Numbers
        1. 6.2.1.1. Format Attribute Tokens
        2. 6.2.1.2. Single-Level Numbers
        3. 6.2.1.3. Multiple-Level Numbers
      2. 6.2.2. Formatting Source Numbers
        1. 6.2.2.1. Converting a Number
        2. 6.2.2.2. Declaring a Format
    3. 6.3. Dates and Times
      1. 6.3.1. Contextual Dates
      2. 6.3.2. Formatting
        1. 6.3.2.1. Picture Strings
        2. 6.3.2.2. Date-Formatting Tokens
        3. 6.3.2.3. Language, Calendar, and Country
      3. 6.3.3. Combining and Converting Values
      4. 6.3.4. Durations
      5. 6.3.5. Time zones
    4. 6.4. Summary
    5. 6.5. Exercises
  11. 7. Multiple Documents
    1. 7.1. Modular Stylesheets
      1. 7.1.1. Including Modules
        1. 7.1.1.1. Creating Modules
        2. 7.1.1.2. A Datetime Module
      2. 7.1.2. Imported Stylesheets
        1. 7.1.2.1. Global Parameters
        2. 7.1.2.2. Templates
        3. 7.1.2.3. Activating an Imported Rule
        4. 7.1.2.4. Using <xsl:next-match>
    2. 7.2. Source Documents
      1. 7.2.1. Using the document() Function
      2. 7.2.2. XPath Alternatives
        1. 7.2.2.1. The doc() Function
        2. 7.2.2.2. The collection() Function
      3. 7.2.3. Setting or Changing Context
    3. 7.3. Output Documents
      1. 7.3.1. Preparing a Feed Update
      2. 7.3.2. Splitting a Document
    4. 7.4. Summary
    5. 7.5. Exercises
  12. 8. Processing Text
    1. 8.1. Controlling Whitespace
      1. 8.1.1. Stripping Space
      2. 8.1.2. Preserving Space
      3. 8.1.3. Using <xsl:text>
    2. 8.2. XML to Text
    3. 8.3. Text to XML
      1. 8.3.1. Loading Unparsed Text
      2. 8.3.2. Analyzing the Input
    4. 8.4. Alternatives to XSLT
      1. 8.4.1. XML Maps
      2. 8.4.2. XML Data in Excel
    5. 8.5. Summary
    6. 8.6. Exercises
  13. 9. Identifiers and Keys
    1. 9.1. ID Datatypes
    2. 9.2. Using the id() Function
    3. 9.3. Keys
      1. 9.3.1. The key() Function
    4. 9.4. Generating Identifiers
      1. 9.4.1. Indexing Lines
      2. 9.4.2. Census to GEDCOM XML
    5. 9.5. Summary
    6. 9.6. Exercises
  14. 10. Debugging, Validation, and Documentation
    1. 10.1. Debugging XSLT
      1. 10.1.1. Profiling
      2. 10.1.2. Verifying XHTML Output
      3. 10.1.3. Using Messages
      4. 10.1.4. Commenting Output
      5. 10.1.5. Using the error() Function
    2. 10.2. Type and Schema Validation
      1. 10.2.1. Types in XSLT
      2. 10.2.2. Using a Schema-Aware Processor
        1. 10.2.2.1. Importing Type Definitions
        2. 10.2.2.2. Validating XSLT Output
        3. 10.2.2.3. Specifying User-Defined Types
        4. 10.2.2.4. Source-Document Validation
        5. 10.2.2.5. Validating Elements and Attributes
        6. 10.2.2.6. Conditional Validation
    3. 10.3. Documenting Your Stylesheets
    4. 10.4. Summary
    5. 10.5. Exercises
  15. 11. A Case Study
    1. 11.1. Schema Overview
    2. 11.2. Common Elements and Attributes
      1. 11.2.1. Common Attributes
      2. 11.2.2. Block Elements
      3. 11.2.3. Inline Elements
    3. 11.3. The Quick-Reference Schema
      1. 11.3.1. Link Container Elements
      2. 11.3.2. Property Elements
      3. 11.3.3. Link Verification
    4. 11.4. Metadata Schemas
      1. 11.4.1. Resource Metadata
        1. 11.4.1.1. Collection
        2. 11.4.1.2. Language Values
        3. 11.4.1.3. Identifiers
        4. 11.4.1.4. Authors and Contributors
        5. 11.4.1.5. Dates
        6. 11.4.1.6. Content
      2. 11.4.2. Subject Metadata
    5. 11.5. Reference Stylesheets
    6. 11.6. Link Module
      1. 11.6.1. Link Parameters
        1. 11.6.1.1. Labeling Headings
        2. 11.6.1.2. Scheme Selection
      2. 11.6.2. Function Module
    7. 11.7. Term Module
      1. 11.7.1. Term Parameters
      2. 11.7.2. Displaying Inline Terms
    8. 11.8. Building the Site
      1. 11.8.1. Generating the Reference Pages
        1. 11.8.1.1. Navigation Tabs
        2. 11.8.1.2. Table of Contents
        3. 11.8.1.3. Content Section
        4. 11.8.1.4. Function-Reference Pages
      2. 11.8.2. Landing and Glossary Pages
      3. 11.8.3. Creating a Sitemap
    9. 11.9. Summary
  16. A. Answers to Exercises
    1. A.1. Chapter 1
    2. A.2. Chapter 2
      1. A.2.1. Question 1
        1. A.2.1.1. Solution
      2. A.2.2. Question 2
        1. A.2.2.1. Solution
      3. A.2.3. Question 3
        1. A.2.3.1. Solution
    3. A.3. Chapter 3
      1. A.3.1. Question 1
        1. A.3.1.1. Solution
      2. A.3.2. Question 2
        1. A.3.2.1. Solution
    4. A.4. Chapter 4
      1. A.4.1. Question 1
        1. A.4.1.1. Solution
      2. A.4.2. Question 2
        1. A.4.2.1. Solution
    5. A.5. Chapter 5
      1. A.5.1. Question 1
        1. A.5.1.1. Solution
      2. A.5.2. Question 2
        1. A.5.2.1. Solution
      3. A.5.3. Question 3
        1. A.5.3.1. Solution
    6. A.6. Chapter 6
      1. A.6.1. Question 1
        1. A.6.1.1. Solution
      2. A.6.2. Question 2
        1. A.6.2.1. Solution
      3. A.6.3. Question 3
        1. A.6.3.1. Solution
    7. A.7. Chapter 7
      1. A.7.1. Question 1
        1. A.7.1.1. Solution
      2. A.7.2. Question 2
        1. A.7.2.1. Solution
      3. A.7.3. Question 3
        1. A.7.3.1. Solution
      4. A.7.4. Question 4
        1. A.7.4.1. Solution
    8. A.8. Chapter 8
      1. A.8.1. Question 1
        1. A.8.1.1. Solution
      2. A.8.2. Question 2
        1. A.8.2.1. Solution
      3. A.8.3. Question 3
        1. A.8.3.1. Solution
    9. A.9. Chapter 9
      1. A.9.1. Question 1
        1. A.9.1.1. Solution
      2. A.9.2. Question 2
        1. A.9.2.1. Solution
      3. A.9.3. Question 3
        1. A.9.3.1. Solution
    10. A.10. Chapter 10
      1. A.10.1. Question 1
        1. A.10.1.1. Solution
      2. A.10.2. Question 2
        1. A.10.2.1. Solution
    11. A.11. Chapter 11
  17. B. Extending XSLT
    1. B.1. Stylesheet Functions
      1. B.1.1. Calling an Extension Function
    2. B.2. Function Libraries
      1. B.2.1. EXSLT
      2. B.2.2. FunctX
    3. B.3. Vendor Extensions
      1. B.3.1.
        1. B.3.1.1. EXSLT Modules
        2. B.3.1.2. Functions
        3. B.3.1.3. Instructions
        4. B.3.1.4. Attributes
        5. B.3.1.5. Serialization Parameters
    4. B.4. User-Defined Extensions
  18. C. XSLT Processing Model
    1. C.1. The Data Model
    2. C.2. Transforming
      1. C.2.1. Parsing Inputs
      2. C.2.2. Template Rules
      3. C.2.3. Variables and Parameters
      4. C.2.4. Controlling Processing
      5. C.2.5. Outputs and Serialization
  19. D. XSLT 2.0 Quick Reference
    1. D.1. Elements
      1. D.1.1. Attribute Groups
      2. D.1.2. Types
      3. D.1.3. Functions
    2. D.2. XSLT Elements
      1. D.2.1. xsl:analyze-string
        1. D.2.1.1. Purpose
        2. D.2.1.2. Usage
        3. D.2.1.3. Contains
        4. D.2.1.4. In substitution group
        5. D.2.1.5. Attributes
        6. D.2.1.6. Attribute group
      2. D.2.2. xsl:apply-imports
        1. D.2.2.1. Purpose
        2. D.2.2.2. Usage
        3. D.2.2.3. Contains
        4. D.2.2.4. In substitution group
        5. D.2.2.5. Attribute group
        6. D.2.2.6. See also
      3. D.2.3. xsl:apply-templates
        1. D.2.3.1. Purpose
        2. D.2.3.2. Usage
        3. D.2.3.3. Contains
        4. D.2.3.4. In substitution group
        5. D.2.3.5. Attributes
        6. D.2.3.6. Attribute group
      4. D.2.4. xsl:attribute
        1. D.2.4.1. Purpose
        2. D.2.4.2. Usage
        3. D.2.4.3. Contains
        4. D.2.4.4. In substitution group
        5. D.2.4.5. Attributes
        6. D.2.4.6. Attribute group
      5. D.2.5. xsl:attribute-set
        1. D.2.5.1. Purpose
        2. D.2.5.2. Usage
        3. D.2.5.3. Contains
        4. D.2.5.4. In substitution group
        5. D.2.5.5. Attributes
        6. D.2.5.6. Attribute group
      6. D.2.6. xsl:call-template
        1. D.2.6.1. Purpose
        2. D.2.6.2. Usage
        3. D.2.6.3. Contains
        4. D.2.6.4. In substitution group
        5. D.2.6.5. Attribute
        6. D.2.6.6. Attribute group
        7. D.2.6.7. See also
      7. D.2.7. xsl:character-map
        1. D.2.7.1. Purpose
        2. D.2.7.2. Usage
        3. D.2.7.3. Contains
        4. D.2.7.4. In substitution group
        5. D.2.7.5. Attributes
        6. D.2.7.6. Attribute group
        7. D.2.7.7. See also
      8. D.2.8. xsl:choose
        1. D.2.8.1. Purpose
        2. D.2.8.2. Usage
        3. D.2.8.3. Contains
        4. D.2.8.4. In substitution group
        5. D.2.8.5. Attribute group
        6. D.2.8.6. See also
      9. D.2.9. xsl:comment
        1. D.2.9.1. Purpose
        2. D.2.9.2. Usage
        3. D.2.9.3. In substitution group
        4. D.2.9.4. Attribute
        5. D.2.9.5. Attribute group
      10. D.2.10. xsl:copy
        1. D.2.10.1. Purpose
        2. D.2.10.2. Usage
        3. D.2.10.3. In substitution group
        4. D.2.10.4. Attributes
        5. D.2.10.5. Attribute group
        6. D.2.10.6. See also
      11. D.2.11. xsl:copy-of
        1. D.2.11.1. Purpose
        2. D.2.11.2. Usage
        3. D.2.11.3. In substitution group
        4. D.2.11.4. Attributes
        5. D.2.11.5. Attribute group
        6. D.2.11.6. See also
      12. D.2.12. xsl:decimal-format
        1. D.2.12.1. Purpose
        2. D.2.12.2. Usage
        3. D.2.12.3. Contained by
        4. D.2.12.4. Attributes
        5. D.2.12.5. Attribute group
        6. D.2.12.6. See also
      13. D.2.13. xsl:declaration
        1. D.2.13.1. Purpose
        2. D.2.13.2. Usage
        3. D.2.13.3. Substitute
      14. D.2.14. xsl:document
        1. D.2.14.1. Purpose
        2. D.2.14.2. Usage
        3. D.2.14.3. In substitution group
        4. D.2.14.4. Attribute group
        5. D.2.14.5. See also
      15. D.2.15. xsl:element
        1. D.2.15.1. Purpose
        2. D.2.15.2. Usage
        3. D.2.15.3. In substitution group
        4. D.2.15.4. Attributes
        5. D.2.15.5. Attribute group
      16. D.2.16. xsl:fallback
        1. D.2.16.1. Purpose
        2. D.2.16.2. Usage
        3. D.2.16.3. In substitution group
        4. D.2.16.4. See also
      17. D.2.17. xsl:for-each
        1. D.2.17.1. Purpose
        2. D.2.17.2. Usage
        3. D.2.17.3. Contains
        4. D.2.17.4. In substitution group
        5. D.2.17.5. Attribute
        6. D.2.17.6. Attribute group
      18. D.2.18. xsl:for-each-group
        1. D.2.18.1. Purpose
        2. D.2.18.2. Usage
        3. D.2.18.3. Contains
        4. D.2.18.4. In substitution group
        5. D.2.18.5. Attributes
        6. D.2.18.6. Attribute group
        7. D.2.18.7. See also
      19. D.2.19. xsl:function
        1. D.2.19.1. Purpose
        2. D.2.19.2. Usage
        3. D.2.19.3. Contains
        4. D.2.19.4. In substitution group
        5. D.2.19.5. Attributes
        6. D.2.19.6. Attribute group
      20. D.2.20. xsl:if
        1. D.2.20.1. Purpose
        2. D.2.20.2. Usage
        3. D.2.20.3. Contains
        4. D.2.20.4. In substitution group
        5. D.2.20.5. Attribute
        6. D.2.20.6. Attribute group
        7. D.2.20.7. See also
      21. D.2.21. xsl:import
        1. D.2.21.1. Purpose
        2. D.2.21.2. Usage
        3. D.2.21.3. Contained by
        4. D.2.21.4. In substitution group
        5. D.2.21.5. Attribute
        6. D.2.21.6. Attribute group
        7. D.2.21.7. See also
      22. D.2.22. xsl:import-schema
        1. D.2.22.1. Purpose
        2. D.2.22.2. Usage
        3. D.2.22.3. In substitution group
        4. D.2.22.4. Attributes
        5. D.2.22.5. Attribute group
      23. D.2.23. xsl:include
        1. D.2.23.1. Purpose
        2. D.2.23.2. Usage
        3. D.2.23.3. In substitution group
        4. D.2.23.4. Attribute
        5. D.2.23.5. Attribute group
        6. D.2.23.6. See also
      24. D.2.24. xsl:instruction
        1. D.2.24.1. Purpose
        2. D.2.24.2. Usage
        3. D.2.24.3. Substitute
      25. D.2.25. xsl:key
        1. D.2.25.1. Purpose
        2. D.2.25.2. Usage
        3. D.2.25.3. Contains
        4. D.2.25.4. In substitution group
        5. D.2.25.5. Attributes
        6. D.2.25.6. Attribute group
        7. D.2.25.7. See also
      26. D.2.26. xsl:matching-substring
        1. D.2.26.1. Purpose
        2. D.2.26.2. Usage
        3. D.2.26.3. Contains
        4. D.2.26.4. Contained by
        5. D.2.26.5. Attribute group
        6. D.2.26.6. See also
      27. D.2.27. xsl:message
        1. D.2.27.1. Purpose
        2. D.2.27.2. Usage
        3. D.2.27.3. Contains
        4. D.2.27.4. In substitution group
        5. D.2.27.5. Attributes
        6. D.2.27.6. Attribute group
        7. D.2.27.7. See also
      28. D.2.28. xsl:namespace
        1. D.2.28.1. Purpose
        2. D.2.28.2. Usage
        3. D.2.28.3. Contains
        4. D.2.28.4. In substitution group
        5. D.2.28.5. Attributes
        6. D.2.28.6. Attribute group
      29. D.2.29. xsl:namespace-alias
        1. D.2.29.1. Purpose
        2. D.2.29.2. Usage
        3. D.2.29.3. In substitution group
        4. D.2.29.4. Attributes
        5. D.2.29.5. Attribute group
      30. D.2.30. xsl:next-match
        1. D.2.30.1. Purpose
        2. D.2.30.2. Usage
        3. D.2.30.3. Contains
        4. D.2.30.4. In substitution group
        5. D.2.30.5. Attribute groups
        6. D.2.30.6. See also
      31. D.2.31. xsl:non-matching-substring
        1. D.2.31.1. Purpose
        2. D.2.31.2. Usage
        3. D.2.31.3. Contains
        4. D.2.31.4. Contained by
        5. D.2.31.5. Attribute group
        6. D.2.31.6. See also
      32. D.2.32. xsl:number
        1. D.2.32.1. Purpose
        2. D.2.32.2. Usage
        3. D.2.32.3. Contains
        4. D.2.32.4. In substitution group
        5. D.2.32.5. Attributes
        6. D.2.32.6. Attribute group
        7. D.2.32.7. See also
      33. D.2.33. xsl:otherwise
        1. D.2.33.1. Purpose
        2. D.2.33.2. Contains
        3. D.2.33.3. Contained by
        4. D.2.33.4. Attribute group
      34. D.2.34. xsl:output
        1. D.2.34.1. Purpose
        2. D.2.34.2. Usage
        3. D.2.34.3. In substitution group
        4. D.2.34.4. Attributes
        5. D.2.34.5. Attribute group
      35. D.2.35. xsl:output-character
        1. D.2.35.1. Purpose
        2. D.2.35.2. Contained by
        3. D.2.35.3. Attributes
        4. D.2.35.4. Attribute group
      36. D.2.36. xsl:param
        1. D.2.36.1. Purpose
        2. D.2.36.2. Usage
        3. D.2.36.3. Contains
        4. D.2.36.4. Contained by
        5. D.2.36.5. Attributes
        6. D.2.36.6. Attribute group
        7. D.2.36.7. See also
      37. D.2.37. xsl:perform-sort
        1. D.2.37.1. Purpose
        2. D.2.37.2. Usage
        3. D.2.37.3. Contains
        4. D.2.37.4. Attribute
        5. D.2.37.5. Attribute group
      38. D.2.38. xsl:preserve-space
        1. D.2.38.1. Purpose
        2. D.2.38.2. Usage
        3. D.2.38.3. In substitution group
        4. D.2.38.4. Attribute
        5. D.2.38.5. Attribute group
        6. D.2.38.6. See also
      39. D.2.39. xsl:processing-instruction
        1. D.2.39.1. Purpose
        2. D.2.39.2. Usage
        3. D.2.39.3. In substitution group
        4. D.2.39.4. Attributes
        5. D.2.39.5. Attribute group
      40. D.2.40. xsl:result-document
        1. D.2.40.1. Purpose
        2. D.2.40.2. Usage
        3. D.2.40.3. Contains
        4. D.2.40.4. In substitution group
        5. D.2.40.5. Attributes
        6. D.2.40.6. Attribute group
      41. D.2.41. xsl:sequence
        1. D.2.41.1. Purpose
        2. D.2.41.2. Usage
        3. D.2.41.3. Contains
        4. D.2.41.4. In substitution group
        5. D.2.41.5. Attribute
        6. D.2.41.6. Attribute group
      42. D.2.42. xsl:sort
        1. D.2.42.1. Purpose
        2. D.2.42.2. Usage
        3. D.2.42.3. Contains
        4. D.2.42.4. Contained by
        5. D.2.42.5. Attributes
        6. D.2.42.6. Attribute group
      43. D.2.43. xsl:strip-space
        1. D.2.43.1. Purpose
        2. D.2.43.2. Usage
        3. D.2.43.3. In substitution group
        4. D.2.43.4. Attribute
        5. D.2.43.5. Attribute group
        6. D.2.43.6. See also
      44. D.2.44. xsl:stylesheet
        1. D.2.44.1. Purpose
        2. D.2.44.2. Usage
        3. D.2.44.3. In substitution group
      45. D.2.45. xsl:template
        1. D.2.45.1. Purpose
        2. D.2.45.2. Usage
        3. D.2.45.3. Contains
        4. D.2.45.4. In substitution group
        5. D.2.45.5. Attributes
        6. D.2.45.6. Attribute group
        7. D.2.45.7. See also
      46. D.2.46. xsl:text
        1. D.2.46.1. Purpose
        2. D.2.46.2. Usage
        3. D.2.46.3. In substitution group
        4. D.2.46.4. Attribute
        5. D.2.46.5. Attribute group
      47. D.2.47. xsl:transform
        1. D.2.47.1. Purpose
        2. D.2.47.2. Usage
        3. D.2.47.3. Contains
        4. D.2.47.4. Attributes
        5. D.2.47.5. Attribute group
      48. D.2.48. xsl:value-of
        1. D.2.48.1. Purpose
        2. D.2.48.2. Usage
        3. D.2.48.3. Contains
        4. D.2.48.4. In substitution group
        5. D.2.48.5. Attributes
        6. D.2.48.6. Attribute group
      49. D.2.49. xsl:variable
        1. D.2.49.1. Purpose
        2. D.2.49.2. Usage
        3. D.2.49.3. Contains
        4. D.2.49.4. Contained by
        5. D.2.49.5. Attributes
        6. D.2.49.6. Attribute group
      50. D.2.50. xsl:with-param
        1. D.2.50.1. Purpose
        2. D.2.50.2. Usage
        3. D.2.50.3. Contains
        4. D.2.50.4. Contained by
        5. D.2.50.5. Attributes
        6. D.2.50.6. Attribute group
        7. D.2.50.7. See also
    3. D.3. Attribute Groups
      1. D.3.1. Generic element attributes
        1. D.3.1.1. Purpose
        2. D.3.1.2. Attributes
      2. D.3.2. Version attributes
        1. D.3.2.1. Purpose
        2. D.3.2.2. Attribute
      3. D.3.3. Validation attributes
        1. D.3.3.1. Purpose
        2. D.3.3.2. Usage
        3. D.3.3.3. Attributes
    4. D.4. Types
    5. D.5. XSLT Functions
      1. D.5.1. current
        1. D.5.1.1. Purpose
        2. D.5.1.2. Signature
      2. D.5.2. current-group
        1. D.5.2.1. Purpose
        2. D.5.2.2. Signature
        3. D.5.2.3. See also
      3. D.5.3. current-grouping-key
        1. D.5.3.1. Purpose
        2. D.5.3.2. Signature
        3. D.5.3.3. See also
      4. D.5.4. document
        1. D.5.4.1. Purpose
        2. D.5.4.2. Signature
        3. D.5.4.3. Parameters
        4. D.5.4.4. See also
      5. D.5.5. element-available
        1. D.5.5.1. Purpose
        2. D.5.5.2. Signature
        3. D.5.5.3. Parameter
      6. D.5.6. format-date, format-dateTime, format-time,
        1. D.5.6.1. Purpose
        2. D.5.6.2. Signature
        3. D.5.6.3. Parameters
      7. D.5.7. format-number
        1. D.5.7.1. Purpose
        2. D.5.7.2. Signature
        3. D.5.7.3. Parameters
      8. D.5.8. function-available
        1. D.5.8.1. Purpose
        2. D.5.8.2. Signature
        3. D.5.8.3. Parameters
      9. D.5.9. generate-id
        1. D.5.9.1. Purpose
        2. D.5.9.2. Signature
        3. D.5.9.3. Parameter
      10. D.5.10. key
        1. D.5.10.1. Purpose
        2. D.5.10.2. Signature
        3. D.5.10.3. Parameters
        4. D.5.10.4. See also
      11. D.5.11. regex-group
        1. D.5.11.1. Purpose
        2. D.5.11.2. Signature
        3. D.5.11.3. Parameter
        4. D.5.11.4. See also
      12. D.5.12. system-property
        1. D.5.12.1. Purpose
        2. D.5.12.2. Signature
        3. D.5.12.3. Parameter
      13. D.5.13. type-available
        1. D.5.13.1. Purpose
        2. D.5.13.2. Signature
        3. D.5.13.3. Parameter
      14. D.5.14. unparsed-text, unparsed-text-available
        1. D.5.14.1. Purpose
        2. D.5.14.2. Signature
        3. D.5.14.3. Parameters
        4. D.5.14.4. See also
      15. D.5.15. unparsed-entity-public-id, unparsed-entity-uri
        1. D.5.15.1. Purpose
        2. D.5.15.2. Signature
        3. D.5.15.3. Parameter
  20. E. XSLT 2.0 Schema
    1. E.1. W3C® Document License
  21. F. XPath 2.0 Function Reference
    1. F.1. Functions
      1. F.1.1. abs
        1. F.1.1.1. Purpose
        2. F.1.1.2. Signature
        3. F.1.1.3. Parameter
      2. F.1.2. avg
        1. F.1.2.1. Purpose
        2. F.1.2.2. Signature
        3. F.1.2.3. Parameter
      3. F.1.3. adjust-date-to-timezone, adjust-dateTime-to-timezone, adjust-time-to-timezone
        1. F.1.3.1. Purpose
        2. F.1.3.2. Signature
        3. F.1.3.3. Parameters
        4. F.1.3.4. See also
      4. F.1.4. base-uri
        1. F.1.4.1. Purpose
        2. F.1.4.2. Signature
        3. F.1.4.3. Parameter
      5. F.1.5. boolean
        1. F.1.5.1. Purpose
        2. F.1.5.2. Signature
        3. F.1.5.3. Parameter
      6. F.1.6. ceiling
        1. F.1.6.1. Purpose
        2. F.1.6.2. Signature
        3. F.1.6.3. Parameter
        4. F.1.6.4. See also
      7. F.1.7. codepoint-equal
        1. F.1.7.1. Purpose
        2. F.1.7.2. Signature
        3. F.1.7.3. Parameter
      8. F.1.8. codepoints-to-string
        1. F.1.8.1. Purpose
        2. F.1.8.2. Signature
        3. F.1.8.3. Parameter
      9. F.1.9. collection
        1. F.1.9.1. Purpose
        2. F.1.9.2. Signature
        3. F.1.9.3. Parameter
      10. F.1.10. compare
        1. F.1.10.1. Purpose
        2. F.1.10.2. Signature
        3. F.1.10.3. Parameters
      11. F.1.11. concat
        1. F.1.11.1. Purpose
        2. F.1.11.2. Signature
        3. F.1.11.3. Parameter
      12. F.1.12. count
        1. F.1.12.1. Purpose
        2. F.1.12.2. Signature
        3. F.1.12.3. Parameter
        4. F.1.12.4. See also
      13. F.1.13. current-date, current-dateTime, current-time
        1. F.1.13.1. Purpose
        2. F.1.13.2. Signature
      14. F.1.14. data
        1. F.1.14.1. Purpose
        2. F.1.14.2. Signature
        3. F.1.14.3. Parameter
      15. F.1.15. dateTime
        1. F.1.15.1. Purpose
        2. F.1.15.2. Signature
        3. F.1.15.3. Parameters
      16. F.1.16. day-from-date, day-from-dateTime
        1. F.1.16.1. Purpose
        2. F.1.16.2. Signature
        3. F.1.16.3. Parameter
      17. F.1.17. days-from-duration
        1. F.1.17.1. Purpose
        2. F.1.17.2. Signature
        3. F.1.17.3. Parameter
      18. F.1.18. deep-equal
        1. F.1.18.1. Purpose
        2. F.1.18.2. Signature
        3. F.1.18.3. Parameters
      19. F.1.19. default-collation
        1. F.1.19.1. Purpose
        2. F.1.19.2. Signature
      20. F.1.20. distinct-values
        1. F.1.20.1. Purpose
        2. F.1.20.2. Signature
        3. F.1.20.3. Parameters
      21. F.1.21. doc, doc-available
        1. F.1.21.1. Purpose
        2. F.1.21.2. Signature
        3. F.1.21.3. Parameter
      22. F.1.22. document-uri
        1. F.1.22.1. Purpose
        2. F.1.22.2. Signature
        3. F.1.22.3. Parameter
      23. F.1.23. empty
        1. F.1.23.1. Purpose
        2. F.1.23.2. Signature
        3. F.1.23.3. Parameter
      24. F.1.24. encode-for-uri
        1. F.1.24.1. Purpose
        2. F.1.24.2. Signature
        3. F.1.24.3. Parameter
      25. F.1.25. ends-with
        1. F.1.25.1. Purpose
        2. F.1.25.2. Signature
        3. F.1.25.3. Parameters
      26. F.1.26. error
        1. F.1.26.1. Purpose
        2. F.1.26.2. Signature
        3. F.1.26.3. Parameters
      27. F.1.27. escape-html-uri
        1. F.1.27.1. Purpose
        2. F.1.27.2. Signature
        3. F.1.27.3. Parameter
      28. F.1.28. exactly-one
        1. F.1.28.1. Purpose
        2. F.1.28.2. Signature
        3. F.1.28.3. Parameter
      29. F.1.29. exists
        1. F.1.29.1. Purpose
        2. F.1.29.2. Signature
        3. F.1.29.3. Parameter
      30. F.1.30. false
        1. F.1.30.1. Purpose
        2. F.1.30.2. Signature
        3. F.1.30.3. See also
      31. F.1.31. floor
        1. F.1.31.1. Purpose
        2. F.1.31.2. Signature
        3. F.1.31.3. Parameter
        4. F.1.31.4. See also
      32. F.1.32. hours-from-dateTime, hours-from-time
        1. F.1.32.1. Purpose
        2. F.1.32.2. Signature
        3. F.1.32.3. Parameter
        4. F.1.32.4. See also
      33. F.1.33. id
        1. F.1.33.1. Purpose
        2. F.1.33.2. Signature
        3. F.1.33.3. Parameters
        4. F.1.33.4. See also
      34. F.1.34. idref
        1. F.1.34.1. Purpose
        2. F.1.34.2. Signature
        3. F.1.34.3. Parameters
        4. F.1.34.4. See also
      35. F.1.35. implicit-timezone
        1. F.1.35.1. Purpose
        2. F.1.35.2. Signature
        3. F.1.35.3. See also
      36. F.1.36. index-of
        1. F.1.36.1. Signature
        2. F.1.36.2. Purpose
        3. F.1.36.3. Parameters
      37. F.1.37. implicit-timezone
        1. F.1.37.1. Purpose
        2. F.1.37.2. Signature
        3. F.1.37.3. See also
      38. F.1.38. in-scope-prefixes
        1. F.1.38.1. Purpose
        2. F.1.38.2. Signature
        3. F.1.38.3. Parameter
      39. F.1.39. insert-before
        1. F.1.39.1. Purpose
        2. F.1.39.2. Signature
        3. F.1.39.3. Parameters
      40. F.1.40. iri-to-uri
        1. F.1.40.1. Purpose
        2. F.1.40.2. Signature
        3. F.1.40.3. Parameter
      41. F.1.41. lang
        1. F.1.41.1. Purpose
        2. F.1.41.2. Signature
        3. F.1.41.3. Parameters
      42. F.1.42. last
        1. F.1.42.1. Purpose
        2. F.1.42.2. Signature
        3. F.1.42.3. See also
      43. F.1.43. local-name
        1. F.1.43.1. Purpose
        2. F.1.43.2. Signature
        3. F.1.43.3. Parameter
      44. F.1.44. local-name-from-QName
        1. F.1.44.1. Purpose
        2. F.1.44.2. Signature
        3. F.1.44.3. Parameter
      45. F.1.45. lower-case
        1. F.1.45.1. Purpose
        2. F.1.45.2. Signature
        3. F.1.45.3. Parameter
        4. F.1.45.4. See also
      46. F.1.46. matches
        1. F.1.46.1. Purpose
        2. F.1.46.2. Signature
        3. F.1.46.3. Parameters
      47. F.1.47. max, min
        1. F.1.47.1. Purpose
        2. F.1.47.2. Signature
        3. F.1.47.3. Parameters
      48. F.1.48. minutes-from-dateTime, minutes-from-time
        1. F.1.48.1. Purpose
        2. F.1.48.2. Signature
        3. F.1.48.3. Parameter
        4. F.1.48.4. See also
      49. F.1.49. minutes-from-duration
        1. F.1.49.1. Purpose
        2. F.1.49.2. Signature
        3. F.1.49.3. Parameter
      50. F.1.50. month-from-date, month-from-dateTime
        1. F.1.50.1. Purpose
        2. F.1.50.2. Signature
        3. F.1.50.3. Parameter
        4. F.1.50.4. See also
      51. F.1.51. months-from-duration
        1. F.1.51.1. Purpose
        2. F.1.51.2. Signature
        3. F.1.51.3. Parameter
      52. F.1.52. month-from-date, month-from-dateTime
        1. F.1.52.1. Purpose
        2. F.1.52.2. Signature
        3. F.1.52.3. Parameter
        4. F.1.52.4. See also
      53. F.1.53. name
        1. F.1.53.1. Purpose
        2. F.1.53.2. Signature
        3. F.1.53.3. Parameter
      54. F.1.54. namespace-uri
        1. F.1.54.1. Purpose
        2. F.1.54.2. Signature
        3. F.1.54.3. Parameter
      55. F.1.55. namespace-uri-for-prefix
        1. F.1.55.1. Purpose
        2. F.1.55.2. Signature
        3. F.1.55.3. Parameters
      56. F.1.56. namespace-uri-from-QName
        1. F.1.56.1. Purpose
      57. F.1.57. nilled
        1. F.1.57.1. Purpose
        2. F.1.57.2. Signature
        3. F.1.57.3. Parameter
      58. F.1.58. normalize-unicode
        1. F.1.58.1. Purpose
        2. F.1.58.2. Signature
        3. F.1.58.3. Parameters
      59. F.1.59. not
        1. F.1.59.1. Purpose
        2. F.1.59.2. Signature
        3. F.1.59.3. Parameter
      60. F.1.60. number
        1. F.1.60.1. Purpose
        2. F.1.60.2. Signature
        3. F.1.60.3. Parameter
      61. F.1.61. one-or-more
        1. F.1.61.1. Purpose
        2. F.1.61.2. Signature
        3. F.1.61.3. Parameter
      62. F.1.62. position
        1. F.1.62.1. Purpose
        2. F.1.62.2. Signature
        3. F.1.62.3. See also
      63. F.1.63. prefix-from-QName
        1. F.1.63.1. Purpose
        2. F.1.63.2. Signature
        3. F.1.63.3. Parameter
      64. F.1.64. QName
        1. F.1.64.1. Purpose
        2. F.1.64.2. Signature
        3. F.1.64.3. Parameters
      65. F.1.65. remove
        1. F.1.65.1. Purpose
        2. F.1.65.2. Signature
        3. F.1.65.3. Parameters
      66. F.1.66. replace
        1. F.1.66.1. Purpose
        2. F.1.66.2. Signature
        3. F.1.66.3. Parameters
      67. F.1.67. resolve-uri
        1. F.1.67.1. Purpose
        2. F.1.67.2. Signature
        3. F.1.67.3. Parameters
      68. F.1.68. resolve-QName
        1. F.1.68.1. Purpose
        2. F.1.68.2. Signature
        3. F.1.68.3. Parameters
      69. F.1.69. reverse
        1. F.1.69.1. Purpose
        2. F.1.69.2. Signature
        3. F.1.69.3. Parameter
      70. F.1.70. root
        1. F.1.70.1. Purpose
        2. F.1.70.2. Signature
        3. F.1.70.3. Parameter
      71. F.1.71. round
        1. F.1.71.1. Purpose
        2. F.1.71.2. Signature
        3. F.1.71.3. Parameter
      72. F.1.72. round-half-to-even
        1. F.1.72.1. Purpose
        2. F.1.72.2. Signature
        3. F.1.72.3. Parameters
      73. F.1.73. seconds-from-dateTime, seconds-from-time
        1. F.1.73.1. Purpose
        2. F.1.73.2. Signature
        3. F.1.73.3. Parameter
        4. F.1.73.4. See also
      74. F.1.74. seconds-from-duration
        1. F.1.74.1. Purpose
        2. F.1.74.2. Signature
        3. F.1.74.3. Parameter
      75. F.1.75. starts-with
        1. F.1.75.1. Purpose
        2. F.1.75.2. Signature
        3. F.1.75.3. Parameters
      76. F.1.76. static-base-uri
        1. F.1.76.1. Purpose
        2. F.1.76.2. Signature
      77. F.1.77. string
        1. F.1.77.1. Purpose
        2. F.1.77.2. Signature
        3. F.1.77.3. Parameter
      78. F.1.78. string-join
        1. F.1.78.1. Purpose
        2. F.1.78.2. Signature
        3. F.1.78.3. Parameters
        4. F.1.78.4. See also
      79. F.1.79. string-length
        1. F.1.79.1. Purpose
        2. F.1.79.2. Signature
        3. F.1.79.3. Parameter
      80. F.1.80. string-to-codepoints
        1. F.1.80.1. Purpose
        2. F.1.80.2. Signature
        3. F.1.80.3. Parameter
      81. F.1.81. subsequence
        1. F.1.81.1. Purpose
        2. F.1.81.2. Signature
        3. F.1.81.3. Parameters
      82. F.1.82. substring
        1. F.1.82.1. Purpose
        2. F.1.82.2. Signature
        3. F.1.82.3. Parameters
      83. F.1.83. substring-after
        1. F.1.83.1. Purpose
        2. F.1.83.2. Signature
        3. F.1.83.3. Parameters
      84. F.1.84. substring-before
        1. F.1.84.1. Purpose
        2. F.1.84.2. Signature
        3. F.1.84.3. Parameters
      85. F.1.85. sum
        1. F.1.85.1. Purpose
        2. F.1.85.2. Signature
        3. F.1.85.3. Parameters
      86. F.1.86. timezone-from-date, timezone-from-dateTime, timezone-from-time
        1. F.1.86.1. Purpose
        2. F.1.86.2. Signature
        3. F.1.86.3. Parameter
        4. F.1.86.4. See also
      87. F.1.87. tokenize
        1. F.1.87.1. Purpose
        2. F.1.87.2. Signature
        3. F.1.87.3. Parameters
      88. F.1.88. trace
        1. F.1.88.1. Purpose
        2. F.1.88.2. Signature
        3. F.1.88.3. Parameters
      89. F.1.89. translate
        1. F.1.89.1. Purpose
        2. F.1.89.2. Signature
        3. F.1.89.3. Parameters
      90. F.1.90. true
        1. F.1.90.1. Purpose
        2. F.1.90.2. Signature
        3. F.1.90.3. See also
      91. F.1.91. unordered
        1. F.1.91.1. Purpose
        2. F.1.91.2. Signature
        3. F.1.91.3. Parameter
      92. F.1.92. upper-case
        1. F.1.92.1. Purpose
        2. F.1.92.2. Signature
        3. F.1.92.3. Parameter
        4. F.1.92.4. See also
      93. F.1.93. year-from-date, year-from-dateTime
        1. F.1.93.1. Purpose
        2. F.1.93.2. Signature
        3. F.1.93.3. Parameter
        4. F.1.93.4. See also
      94. F.1.94. years-from-duration
        1. F.1.94.1. Purpose
        2. F.1.94.2. Signature
        3. F.1.94.3. Parameter
      95. F.1.95. zero-or-one
        1. F.1.95.1. Purpose
        2. F.1.95.2. Signature
        3. F.1.95.3. Parameter
  22. G. References
    1. G.1. Specifications
    2. G.2. Tools and Resources
  23. Glossary