XSLT Cookbook by Sal Mangano The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification This page was updated March 26, 2007. UNCONFIRMED errors and comments from readers: {2} Section 1.2 "index-of" template; The template "index-of" incorrectly returns one when the parameter $substr is an empty string. It should return zero. The culprit is the test with "contains" which evaluates to true in this case. One possible workarond is to change the line: to: {83} 1st line doesn't match the examples zip file version.; The algorithm for calculate-julian-date is not quite right in the examples zip file. The book IS correct - the examples zip file does not take into consideration the leap year days. (195) 2nd code block; Line 8 of code uses key('current-grouping-key', ...) which is not defined in the example. It probably ought to be 'products-by-category'. Additionally, the element is not closed properly. {198} text:wrap code from chapter 5.6; Wrapping loses characters if the "word" is longer than the wrap width. 1234567890123456789012345678901234567890 returns: 1234567890 2345678901 3456789012 4567890 Fix (template text:wrap, page 198, recursive template call): ...change to be... (205) last plain text paragraph; december 2005 edition of Sal Mangano XSLT Cookbook 2nd edition Last plain text paragraph on p. 205 I suppose there's a word (eg: don't) missing: The child element xsl:matching-substring is used to process the substring that matches the regex and xsl:non-matching-substring is used to process the substrings that [MISSING?] match the regex. [212] Example just before section 6.4; Your example will NOT strip an arbitrary XML document of all namespaces since it will copy over any namespace nodes that are children of any elements in the document. For example, if you have an xml document similar to: my pet The namespace will still be present in the copied document. A stylehsheet that DOES strip any and all namespaces, including from the above sample looks as follows: (238-39) Eight examples of logic rather than set theory; All of the examples read @smoker='y' when they should read @smoker='yes', the form of the data in people.xml. Thus the first example should read (245) XSLT code; xsl-import statement is missing the initial letter v in the attribute, and should read . Also the xsl:with-param statements are correct in the book but incorrect in the downloaded code (unique-people.xslt), where they incorrectly read