XSLT Cookbook, 2/e

Sal Mangano

  • 出版商: O'Reilly
  • 出版日期: 2005-11-01
  • 售價: $1,850
  • 貴賓價: 9.5$1,758
  • 語言: 英文
  • 頁數: 778
  • 裝訂: Paperback
  • ISBN: 0596009747
  • ISBN-13: 9780596009748
  • 相關分類: XML
  • 下單後立即進貨 (約1週~2週)




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.

Table of Contents


1. XPath

      1.1 Effectively Using Axes  

      1.2 Filtering Nodes  

      1.3 Working with Sequences  

      1.4 Shrinking Conditional Code with If Expressions  

      1.5 Eliminating Recursion with for Expressions  

      1.6 Taming Complex Logic Using Quantifiers  

      1.7 Using Set Operations  

      1.8 Using Node Comparisons  

      1.9 Coping with XPath 2.0's Extended Type System  

      1.10 Exploiting XPath 2.0's Extended Type System  

2. Strings

      2.1 Testing If a String Ends with Another String  

      2.2 Finding the Position of a Substring  

      2.3 Removing Specific Characters from a String  

      2.4 Finding Substrings from the End of a String  

      2.5 Duplicating a String N Times  

      2.6 Reversing a String  

      2.7 Replacing Text  

      2.8 Converting Case  

      2.9 Tokenizing a String  

      2.10 Making Do Without Regular Expressions  

      2.11 Exploiting Regular Expressions  

      2.12 Using the EXSLT String Extensions  

3. Numbers and Math

      3.1 Formatting Numbers  

      3.2 Rounding Numbers to a Specified Precision  

      3.3 Converting from Roman Numerals to Numbers  

      3.4 Converting from One Base to Another  

      3.5 Implementing Common Math Functions  

      3.6 Computing Sums and Products  

      3.7 Finding Minimums and Maximums  

      3.8 Computing Statistical Functions  

      3.9 Computing Combinatorial Functions  

      3.10 Testing Bits  

4. Dates and Times

      4.1 Calculating the Day of the Week  

      4.2 Determining the Last Day of the Month  

      4.3 Getting Names for Days and Months  

      4.4 Calculating Julian and Absolute Day Numbersfrom a Specified Date  

      4.5 Calculating the Week Number for aSpecified Date  

      4.6 Working with the Julian Calendar  

      4.7 Working with the ISO Calendar  

      4.8 Working with the Islamic Calendar  

      4.9 Working with the Hebrew Calendar  

      4.10 Formatting Dates and Times  

      4.11 Determining Secular and Religious Holidays  

5. Selecting and Traversing

      5.1 Ignoring Duplicate Elements  

      5.2 Selecting All but a Specific Element  

      5.3 Selecting Nodes by Context  

      5.4 Performing a Preorder Traversal  

      5.5 Performing a Postorder Traversal  

      5.6 Performing an In-Order Traversal  

      5.7 Performing a Level-Order Traversal  

      5.8 Processing Nodes by Position  

6. Exploiting XSLT 2.0

      6.1 Convert Simple Named Templates to XSLT Functions  

      6.2 Prefer for-each-group over Muenchian Method of Grouping  

      6.3 Modularizing and Modes  

      6.4 Using Types for Safety and Precision  

      6.5 Avoiding 1.0 to 2.0 Porting Pitfalls  

      6.6 Emulating Object-Oriented Reuse and Design Patterns  

      6.7 Processing Unstructured Text with Regular Expressions  

      6.8 Solving Difficult Serialization Problems with Character Maps  

      6.9 Outputting Multiple Documents  

      6.10 Handling String Literals Containing Quote Characters  

      6.11 Understanding the New Capabilities of Old XSLT 1.0 Features  

7. XML to Text

      7.1 Dealing with Whitespace  

      7.2 Exporting XML to Delimited Data  

      7.3 Creating a Columnar Report  

      7.4 Displaying a Hierarchy  

      7.5 Numbering Textual Output  

      7.6 Wrapping Text to a Specified Width and Alignment  

8. XML to XML

      8.1 Converting Attributes to Elements  

      8.2 Converting Elements to Attributes  

      8.3 Renaming Elements or Attributes  

      8.4 Merging Documents with Identical Schema  

      8.5 Merging Documents with Unlike Schema  

      8.6 Splitting Documents  

      8.7 Flattening an XML Hierarchy  

      8.8 Deepening an XML Hierarchy  

      8.9 Reorganizing an XML Hierarchy  

9. Querying XML

      9.1 Performing Set Operations on Node Sets  

      9.2 Performing Set Operations on Node Sets Using Value Semantics  

      9.3 Determining Set Equality by Value  

      9.4 Performing Structure-Preserving Queries  

      9.5 Joins  

      9.6 Implementing the W3C XML Query-Use Cases in XSLT  

10. XML to HTML

      10.1 Using XSLT as a Styling Language  

      10.2 Creating Hyperlinked Documents  

      10.3 Creating HTML Tables  

      10.4 Creating Frames  

      10.5 Creating Data-Driven Stylesheets  

      10.6 Creating a Self-Contained HTML Transformation  

      10.7 Populating a Form  

11. XML to SVG

      11.1 Transforming an Existing Boilerplate SVG  

      11.2 Creating Reusable SVG Generation Utilities for Graphs and Charts
      11.3 Creating a Tree Diagram  

      11.4 Creating Interactive SVG-Enabled Web Pages  

12. Code Generation

      12.1 Generating Constant Definitions  

      12.2 Generating Switching Code  

      12.3 Generating Message-Handling Stub Code  

      12.4 Generating Data Wrappers  

      12.5 Generating Pretty Printers  

      12.6 Generating a Test Data-Entry Web Client  

      12.7 Generating Test-Entry Web CGI  

      12.8 Generating Code from UML Models via XMI  

      12.9 Generating XSLT from XSLT  

13. Vertical XSLT Application Recipes

      13.1 Converting Visio VDX Documents to SVG  

      13.2 Working with Excel XML Spreadsheets  

      13.3 Generating XTM Topic Maps from UML Models via XMI  

      13.4 Generating Web Sites from XTM Topic Maps  

      13.5 Serving SOAP Documentation from WSDL  

14. Extending and Embedding XSLT

      14.1 Saxon Extension Functions  

      14.2 Saxon Extension Elements  

      14.3 Xalan-Java 2 Extension Functions  

      14.4 Java Extension Function Using the Class Format Namespace  

      14.5 Java Extension Function Using the Package Format Namespace  

      14.6 Java Extension Function Using the Java Format Namespace  

      14.7 Scripting Extension Function Using Inline Script Code  

      14.8 Xalan-Java 2 Extension Elements  

      14.9 Java Extension Element  

      14.10 Scripting Extension Elements  

      14.11 MSXML Extension Functions  

      14.12 Using Saxon's and Xalan's Native Extensions  

      14.13 Extending XSLT with JavaScript  

      14.14 Adding Extension Functions Using Java  

      14.15 Adding Extension Elements Using Java  

      14.16 Using XSLT from Perl  

      14.17 Using XSLT from Java  

15. Testing and Debugging

      15.1 Using xsl:message Effectively  

      15.2 Tracing the Flow of Your Stylesheet Through Its Input Document  

      15.3 Automating the Insertion of Debug Output  

      15.4 Including Embedded Unit Test Data in Utility Stylesheets  

      15.5 Structuring Unit Tests  

      15.6 Testing Boundary and Error Conditions  

16. Generic and Functional Programming

      16.1 Creating Polymorphic XSLT  

      16.2 Creating Generic Element Aggregation Functions  

      16.3 Creating Generic Bounded Aggregation Functions  

      16.4 Creating Generic Mapping Functions  

      16.5 Creating Generic Node-Set Generators