ebook img

Beginning XSLT 2.0 PDF

825 Pages·2005·10.38 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Beginning XSLT 2.0

3243chFM.qxd 6/20/05 10:06 AM Page i Beginning XSLT 2.0 From Novice to Professional JENI TENNISON 3243chFM.qxd 6/20/05 10:06 AM Page ii Beginning XSLT 2.0: From Novice to Professional Copyright © 2005 by Jeni Tennison All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN (pbk): 1-59059-324-3 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use atrademark symbol with every occurrence of atrademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Chris Mills Technical Reviewer: Norman Walsh Editorial Board: Steve Anglin, Dan Appleman, Ewan Buckingham, Gary Cornell, Tony Davis, Jason Gilmore, Jonathan Hassell, Chris Mills, Dominic Shakeshaft, Jim Sumser Assistant Publisher: Grace Wong Project Manager: Kylie Johnston Copy Manager: Nicole LeClerc Copy Editor: Ami Knox Assistant Production Director: Kari Brooks-Copony Production Editor: Kelly Winquist Compositor and Artist: Kinetic Publishing Services, LLC Proofreader: Elizabeth Berry Indexer: Kevin Broccoli Cover Designer: Kurt Krames Manufacturing Manager: Tom Debolski Distributed to the book trade in the United States by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013, and outside the United States by Springer-Verlag GmbH & Co. KG, Tiergartenstr. 17, 69112 Heidelberg, Germany. In the United States: phone 1-800-SPRINGER, fax 201-348-4505, e-mail [email protected], or visit http://www.springer-ny.com. Outside the United States: fax +49 6221 345229, e-mail [email protected], or visit http://www.springer.de. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail [email protected], or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liabilityto any person or entity with respect to any loss or damage caused or alleged to be caused directly or indi- rectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.comin the Downloads section. 3243chFM.qxd 6/20/05 10:06 AM Page iii Contents at a Glance About the Author. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi CHAPTER 1 Introducing XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 CHAPTER 2 Creating HTML from XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 CHAPTER 3 Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 CHAPTER 4 Conditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 CHAPTER 5 Manipulating Atomic Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 CHAPTER 6 Variables and Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 CHAPTER 7 Paths and Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 CHAPTER 8 Result Trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 CHAPTER 9 Sorting and Grouping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 CHAPTER 10 IDs,Keys,and Numbering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 CHAPTER 11 Named Templates,Stylesheet Functions,and Recursion . . . . . . . 473 CHAPTER 12 Building XSLT Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 CHAPTER 13 Schemas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 CHAPTER 14 Backwards Compatibility and Extensions. . . . . . . . . . . . . . . . . . . . . . 557 CHAPTER 15 Dynamic XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 CHAPTER 16 Creating SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625 CHAPTER 17 Interpreting RSS with XSLT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 APPENDIX A XPath Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 APPENDIX B XSLT Quick Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 INDEX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 iii 3243chFM.qxd 6/20/05 10:06 AM Page iv 3243chFM.qxd 6/20/05 10:06 AM Page v Contents About the Author. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi ■ CHAPTER 1 Introducing XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Markup Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Extending HTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Meta-Markup Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 XML:The Extensible Markup Language. . . . . . . . . . . . . . . . . . . . . . . . . 6 XML Rules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 XHTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Naming Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Elements in XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Attributes in XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Entities,Characters,and Encodings. . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Other Components of XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Moving to XHTML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Creating Markup Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Designing Markup Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Validating Markup Languages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Presenting XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Presenting XML with CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Associating Stylesheets with XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Limitations of CSS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 ■ CHAPTER 2 Creating HTML from XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 XSL:The Extensible Stylesheet Language. . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Using XSLT Processors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Using Saxon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Using MSXML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 v 3243chFM.qxd 6/20/05 10:06 AM Page vi vi ■ CONTENTS Simplified Stylesheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Literal Result Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 The <xsl:value-of> Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 The XSLT Namespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Generating HTML Pages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Iterating Over Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Generating Attribute Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 ■ CHAPTER 3 Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 XSLT Stylesheet Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Stylesheet Document Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Defining Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 The Node Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 XSLT Processing Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 The Initial Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Matching Elements with Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 The Built-in Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Extending Stylesheets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Templates As Mapping Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Processing Document-Oriented XML. . . . . . . . . . . . . . . . . . . . . . . . . 104 Context-Dependent Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Resolving Conflicts Between Templates . . . . . . . . . . . . . . . . . . . . . . 117 Choosing the Next Best Template. . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Processing with Push and Pull . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Using Templates with Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Built-in Templates Revisited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Chapter 4 Conditions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Conditional Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Processing Optional Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Using the Ancestry of Source XML. . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Using the Location of Result XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Conditional Elements in XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 Conditional Expressions in XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 3243chFM.qxd 6/20/05 10:06 AM Page vii ■ CONTENTS vii Testing Elements and Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Testing for Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Comparing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Testing with Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 Combining Tests. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 Filtering XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Testing Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 ■ CHAPTER 5 Manipulating Atomic Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Atomic Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 The Atomic Type Hierarchy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Creating Atomic Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Casting Between Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Manipulating Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Splitting and Recombining Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Reformatting Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Regular Expression Processing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Manipulating Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 Formatting Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Manipulating Dates,Times,and Durations. . . . . . . . . . . . . . . . . . . . . . . . . 215 Extracting Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Adjusting Timezones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Formatting Dates and Times . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Manipulating Qualified Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Manipulating URIs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 ■ CHAPTER 6 Variables and Parameters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Defining Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Declaring a Variable’s Type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 Referring to Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Variable Scope. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 Sequence Constructors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 Temporary Trees. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 3243chFM.qxd 6/20/05 10:06 AM Page viii viii ■ CONTENTS Using Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Declaring and Referring to Parameters . . . . . . . . . . . . . . . . . . . . . . . 260 Stylesheet Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 Template Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 ■ CHAPTER 7 Paths and Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 Node Trees Revisited. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Accessing Information About Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . 277 Namespaces in the Node Tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 Whitespace in Node Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 Matching Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Path Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 Step Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Node Tests and Namespaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 Selecting Nodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 Axes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 Evaluating Location Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Sequence Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 Creating Sequences with XSLT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 Creating Sequences with XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Testing Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Iterating Over Sequences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Formatting Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 ■ CHAPTER 8 Result Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 Generating Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 Generating Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Generating Namespace Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Generating Text Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 Generating Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366 Generating Comments and Processing Instructions . . . . . . . . . . . . 372 Creating Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Copying Nodes and Branches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Creating Result Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 3243chFM.qxd 6/20/05 10:06 AM Page ix ■ CONTENTS ix Controlling Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 Output Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 Declaring Content Type Information. . . . . . . . . . . . . . . . . . . . . . . . . . 390 Controlling Output Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 ■ CHAPTER 9 Sorting and Grouping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Sorting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Sorting in Different Orders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Sorting Nonalphabetically. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Multiple Sorts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Flexible Sorting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Grouping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Grouping by Position. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Grouping in Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 Multilevel Grouping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 ■ CHAPTER 10 IDs,Keys,and Numbering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Searching. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 Generating IDs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 Getting the Number of an Item . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 Numbering Sorted and Filtered Items . . . . . . . . . . . . . . . . . . . . . . . . 460 Formatting Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Numbering Across a Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Generating Hierarchical Numbers. . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 Review Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 ■ CHAPTER 11 Named Templates,Stylesheet Functions, and Recursion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 Named Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 Stylesheet Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

Description:
For information on translations, please contact Apress directly at 2560 Ninth My aim is to provide a step-by-step, how-to manual for contain 'interest.gif'; the alt attribute needs to contain '[Favorite]' if the flag attribute is 'favorite'.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.