Errata

XSLT

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
Printed Page Ch. 4
many pages

The name of the car is "Touareg", not "Touraeg"

Anonymous  Aug 27, 2009 
ePub Page chapter 2 Section 5
top

had to edit(remove) everything that referenced any kind of a link in the code so the page would let this go through

<?xml version="1.0"?>
<!-- svg-greeting.xsl -->
<xsl:stylesheet version="1.0"


<xsl:template match="/">
<svg:svg width="10cm" height="4cm">
<svg:g>
<svg:defs>
<svg:radialGradient id="MyGradient"
cx="4cm" cy="2cm" r="3cm" fx="4cm" fy="2cm">
<svg:stop offset="0%" style="stop-color:red"/>
<svg:stop offset="50%" style="stop-color:blue"/>
<svg:stop offset="100%" style="stop-color:red"/>
</svg:radialGradient>
</svg:defs>
<svg:rect style="fill:(#MyGradient); stroke:black"
x="1cm" y="1cm" width="8cm" height="2cm"/>
<svg:text x="5.05cm" y="2.25cm" text-anchor="middle"
style="font-family:Verdana; font-size:24;
font-weight:bold; fill:black">
<xsl:apply-templates select="greeting"/>
</svg:text>
<svg:text x="5cm" y="2.2cm" text-anchor="middle"
style="font-family:Verdana; font-size:24;
font-weight:bold; fill:white">
<xsl:apply-templates select="greeting"/>
</svg:text>
</svg:g>
</svg:svg>
</xsl:template>

<xsl:template match="greeting">
<xsl:value-of select="."/>
</xsl:template>

</xsl:stylesheet>

the result of the SVG created by the xsl, which does not work.

<?xml version="1.0" encoding="UTF-8"?>
<svg:svg xmlns:svg="" width="10cm" height="4cm">
<svg:g>
<svg:defs>
<svg:radialGradient id="MyGradient" cx="4cm" cy="2cm" r="3cm"
fx="4cm" fy="2cm">
<svg:stop offset="0%" style="stop-color:red"/>
<svg:stop offset="50%" style="stop-color:blue"/>
<svg:stop offset="100%" style="stop-color:red"/>
</svg:radialGradient>
</svg:defs>
<svg:rect style="fill:(#MyGradient); stroke:black" x="1cm"
y="1cm" width="8cm" height="2cm"/>
<svg:text x="5.05cm" y="2.25cm" text-anchor="middle"
style="font-family:Verdana; font-size:24; font-weight:bold; fill:black">
Hello, World!
</svg:text>
<svg:text x="5cm" y="2.2cm" text-anchor="middle"
style="font-family:Verdana; font-size:24; font-weight:bold; fill:white">
Hello, World!
</svg:text>
</svg:g>
</svg:svg>

Correct xsl code

<?xml version="1.0"?>
<!-- svg-greeting.xsl -->
<xsl:stylesheet version="1.0"


<xsl:template match="/">
<svg:svg width="10cm" height="4cm">
<svg:g>
<svg:defs>
<svg:radialGradient id="MyGradient">
<svg:stop offset="0%" style="stop-color:red"/>
<svg:stop offset="50%" style="stop-color:blue"/>
<svg:stop offset="100%" style="stop-color:red"/>
</svg:radialGradient>
</svg:defs>
<svg:rect style="fill:(#MyGradient); stroke:black"
x="1cm" y="1cm" width="8cm" height="2cm"/>
<svg:text x="5.05cm" y="2.25cm" text-anchor="middle"
style="font-family:Verdana; font-size:24;
font-weight:bold; fill:black">
<xsl:apply-templates select="greeting"/>
</svg:text>
<svg:text x="5cm" y="2.2cm" text-anchor="middle"
style="font-family:Verdana; font-size:24;
font-weight:bold; fill:white">
<xsl:apply-templates select="greeting"/>
</svg:text>
</svg:g>
</svg:svg>
</xsl:template>

<xsl:template match="greeting">
<xsl:value-of select="."/>
</xsl:template>

</xsl:stylesheet>

correct SVG code

<?xml version="1.0" encoding="UTF-8"?>
<svg:svg xmlns:svg="" width="10cm" height="4cm">
<svg:g>
<svg:defs>
<svg:radialGradient id="MyGradient">
<svg:stop offset="0%" style="stop-color:red"/>
<svg:stop offset="50%" style="stop-color:blue"/>
<svg:stop offset="100%" style="stop-color:red"/>
</svg:radialGradient>
</svg:defs>
<svg:rect style="fill:(#MyGradient); stroke:black" x="1cm"
y="1cm" width="8cm" height="2cm"/>
<svg:text x="5.05cm" y="2.25cm" text-anchor="middle"
style="font-family:Verdana; font-size:24; font-weight:bold; fill:black">
Hello, World!
</svg:text>
<svg:text x="5cm" y="2.2cm" text-anchor="middle"
style="font-family:Verdana; font-size:24; font-weight:bold; fill:white">
Hello, World!
</svg:text>
</svg:g>
</svg:svg>

i took this out of the radial gradient code

cx="4cm" cy="2cm" r="3cm" fx="4cm" fy="2cm"

I am a graphics design engineer. I work with SVG code everyday. Not surprised no one else found this after all these years.

Jack Gates  Jun 16, 2023 
PDF Page 1
PDF Sidebar Table of Contents, entries for Appendix A, Glossary, Index

Unlike the EPUB and MOBI versions, the sidebar Table of Contents in tne PDF version does not expand the listing for Appendix A. The sidebar has only the main title, not the subtitles (like "[2.0] <xsl:analyze-string>"). This greatly increases the difficulty of using one of the most useful features of the book.

In contrast, Sidebar entries for Appendices B to G are expanded down to 1 or 2 sublevels, making it very easy to look for information in those Appendices.

It would also be very useful if the if the sidebar entries Glossary in the EPUB and MOBI were expanded to one sublevel (leading letter) as in the PDF and if the sidebar entries for Index were expanded in the same way for all three formats.

P.S. I set the page number to "1" because the sidebar has no page number and the errata report requires a page number

Ian E. Gorman  Jan 14, 2013 
1.3.1
Whole section

I don't know the exact page as it's not shown in Safari Books Online
Its Chapter 1 Section 3 Part 1
Installing Xalan

I'm only learning this but correct me if I'm wrong...

Xalan-Java's website only says it covers version 1.0 of xsl not version 2

xml[dot]apache[dot]org/xalan-j/


"
Xalan-Java is an XSLT processor for transforming XML documents into HTML, text, or other XML document types. It implements XSL Transformations (XSLT) Version 1.0 and XML Path Language (XPath) Version 1.0 and can be used from the command line, in an applet or a servlet, or as a module in other program.
"

James Duffy  Oct 19, 2018 
Printed Page 7
before last paragraph

Should end with apostrophe instead of double quote:

<book title="XSLT, Second Edition" publisher='O&apos;Reilly'/>

Gerhard Mayer  Dec 17, 2011 
Printed Page 7
last code example

First line of last code listing should be (forward slash should be right before closing > sign:

<book title="XSLT, Second Edition" publisher="O'Reilly"/>

Anonymous  Jul 14, 2012 
Other Digital Version 11
Next to last paragraph

In this example, ... the xmlns:addr attribute associates the paintings prefix with another namespace.

"paintings" should be "addr".

Lithis  Oct 18, 2010 
Printed Page 11
1st sentence in the last but one paragraph

The prefix should be addr, not paintings:

... and the xmlns:addr attribute associates the addr prefix with another ...

Gerhard Mayer  Dec 17, 2011 
Printed Page 26
2/3 down

The Saxon command for transformation is, best I can tell, using the XSLT 2 transformer. There are two issues that I found confusing. First, it appears that the -o option requires a ':' prior to the file name. Second, a warning is given that an XSLT 1 stylesheet is being processed. Here is what I see when running the command:


vangogh% java -classpath ~/Documents/Saxon/saxonhe9-3-0-2j/saxon9he.jar net.sf.saxon.Transform -o greeting.html greeting.xml greeting.xsl
Command line option -o requires a value
vangogh% java -classpath ~/Documents/Saxon/saxonhe9-3-0-2j/saxon9he.jar net.sf.saxon.Transform -o:greeting.html greeting.xml greeting.xsl
Warning: at xsl:stylesheet on line 4 column 54 of greeting.xsl:
Running an XSLT 1 stylesheet with an XSLT 2 processor


BTW I am enjoying the book.

--Gary

Gary Wernsing  Dec 23, 2010 
Printed Page 26
command line for Saxon call

saxonica instead of saxon in the schema-aware version of Saxon:

java com.saxonica.Transform

Gerhard Mayer  Dec 17, 2011 
Printed Page 32
Section "Built-in template rule for namespace nodes

Saxon and AltovaXML complain that the node test namespace() is not defined (not tested with other XSLT processors).

Anonymous  Aug 27, 2009 
Printed Page 32
2nd code fragment

"As an example, given this document:
<?xml version="1.0"?>
<x>
<y>
<z/>
</y>
</z>
"

The final "</z>" should be "</x>"

Anonymous  Jun 02, 2010 
Printed Page 34
stylesheet commencing 8th printed (ie non-blank) line

'greeting' on the 9th line of the stylesheet should read 'greetings'

Code as printed does not output any results in XML Notepad. The modification produces the expected result.

Anonymous  Apr 03, 2011 
Printed Page 40
command line for schema-aware version of Saxon

No dot should be between java and com:

java com.saxonica.Transform

Gerhard Mayer  Dec 17, 2011 
Other Digital Version 47
xml document

I've bought the book and downloaded the code. Thanks.
The document refers to a stylesheet which didn't come with the downloads (sonnet.xsl). This obviously screws up viwing the document online.
Maybe later the stylesheet will be necessary, don't know yet.

More important, I object to:
No confirmed errata was found for this product.
erratum was/errata were

Most important:
Act of Union of England and Scotland 1707 nearly a century after
Shakespeare's death.
He was English not British.

A Correspondent  Jul 13, 2009 
Printed Page 47
Document listing (continues onto page 48)

On page 48 para 2 and again on page 60 para 4 (or 5) the text refers to two processing instructions in the document listed page 47. The second is named "cocoon-process", but I'll be darned if I can find it anywhere in the listing that starts on page 47.

levinjb  Jul 22, 2009 
Printed Page 48
first paragraph...

the section references 'cocoon-process' and 'xsl:value-of', which are no where to be found in the example spanning p.47-8. the result is that the whole paragraph makes no sense.

Anonymous  Feb 22, 2011 
Printed Page 48
second paragraph...

the section references 'cocoon-process' and 'xsl:value-of', which are no where to be found in the example spanning p.47-8. the result is that the paragraph is confusing.

Anonymous  Feb 22, 2011 
Printed Page 95
1st paragraph

Instead of "The fourth test, '3' cast as xs:integer, fails", I think it should read "The fourth test, 'e' cast as xs:integer, fails".

Sean McCoy  Apr 11, 2011 
Printed Page 137
Section "For an example that needs that..."

"contol" should be "control".

Wilson Au  Oct 25, 2010 
Printed Page 140
last paragraph

"delievered" should read "delivered"

Anonymous  Aug 26, 2009 
Printed Page 149
First line after the heading "The <xsl:for-each> Element

"criteria" should read "criterion"

Anonymous  Aug 26, 2009 
Printed Page 152
code at the bottom

"calcuateArea" should read "calculateArea"

Anonymous  Aug 28, 2009 
Printed Page 152
In the section "Parameters"

"You can pass templates" should read "You can pass parameters".

Anonymous  Aug 28, 2009 
Printed Page 171
Paragraph after the second bullet

The word "part" is missing in "on the last of the string".

Anonymous  Aug 26, 2009 
PDF Page 186
in sample code <!-- id2.xsl -->

The sample code as printed, and the identical code downloaded from the website, does not work.

The crucial part of the code is presented as:

<xsl:for-each select="/parts-list/component [partref/@refid=current()/@part-id]">

Since the form of the "partref/@refid" in the sample xml looks like this:
<partref refid="P81952-26-PK P86679-52-SP P81472-68-FD P88107-39-GT"/>

and the "part-id" looks like this:
<part part-id="P86994-25-RC">

the two will of course never be equal, so the code gives no useful output. The code can be fixed using something like:

<xsl:for-each select="/parts-list/component [contains(partref/@refid,current()/@part-id)]">

Philip Spaelti  Nov 09, 2011 
Printed Page 192
second code example

the code

<a name="{@part-id}"/>

should be

<a name="{@component-id}"/>

Anonymous  Aug 28, 2009 
Printed Page 291
Bottom of page

Incomplete errata. Author writes :

"For some reason, the words"

which is an incomplete sentence/thought!

Marvin D. Hernandez  Jan 03, 2010 
Printed Page 358
Middle of the page

Incomplete errata. Author writes :

"The sample stylesheet here is out of sync with the actual example. The stylesheet in the book will work, but the sample posted on the Web site exits gracefully if the dotnet:getPhotoListing() function is not available. The example should be replaced with the following: <?xml version="

but doesn't complete the replacement example.

Marvin D. Hernandez  Jan 03, 2010 
Printed Page 401
paragraph under <xsl:copy> heading

At the end of the paragraph directly under the <xsl:copy> heading, "nfodes" should be "nodes".

Anonymous  Apr 15, 2010 
405
1st paragraph after stylesheet

Example stylesheet copy3.xsl creates new document element <brands>, but example output shows document element <report>. The on-line example is correct.

Peter Collett  Mar 17, 2010 
Printed Page 410
Top of page

Incomplete errata. Author writes :

"Get rid of the extraneous"

The author probably wanted something along the lines of :

?Get rid of the extraneous f from
f <xsl:decimal-format name="f1"
on line 6.?

Marvin D. Hernandez  Jan 03, 2010 
Printed Page 410
6th code line

There appears to be a stray "f" at the beginning of the sixth line of code on page 410.

Anonymous  Jun 24, 2010 
Printed Page 440
<xsl:import> - 1st paragraph

Second sentence should read "...have a lower priority than those in the importing stylesheet."

Peter Collett  Apr 05, 2011 
Printed Page 443
1st text paragraph

3rd sentence should start "Only the importing stylesheet..."

Peter Collett  Apr 05, 2011 
PDF Page 462
2nd paragraph from bottom

The text reads: <quote>In our example here, the different priorities are set by the default XSLT precedence rules. A more specific rule always has precedence over a less specific one, so the highest priority rule for a <code> element inside an <h1> element is the match="h1/code" template.</quote>

The general statement "A more specific rule always has precedence over a less specific one" appears to be incorrect. The XSLT 1.0 Recommendation default priority definition is here:
http://www.w3.org/TR/1999/REC-xslt-19991116#dt-default-priority
For XSLT 2.0, the definition is here:
http://www.w3.org/TR/2007/REC-xslt20-20070123/#dt-default-priority

I would rather have placed this entry under an "omission" category than an error category. I think your readers would benefit from more detail on the "match" templates in general, especially pointing out the differences between the patterns in a "match" attribute and those in a "select" (context being critical in the latter, but not so much in the former). And a thorough discussion of priority and default priority would be extremely helpful. I just had a painful session trying to find out why a node that matched both "TableHeading/TableRow/TableCell" and "TableRow/TableCell" always processed the latter template. Answer: even though the first one is more specific, the two templates have the same default priority, and the stylesheet apparently is allowed to resolve this by choosing the one that appears last in the stylesheet.

Victor Mote  Sep 09, 2010 
Printed Page 660-661
Description of floor() function contradicts the "output" description for the function

Pages 660 & 661 of the book, in the description of the floor() function.

The initial description of the function says:

"Returns the largest integer that is not greater than the argument."

However, this is directly contradicted on the following page in the "output" section of the function description:

"The largest integer that is not less than the argument."

Anonymous  Jun 29, 2017 
Printed Page 824
substring-after() Output definition

Output definition states 'If the second string is a zero-length string, substring-after() returns a zero-length string.' This is incorrect - the entire first string is returned.

Peter Collett  Mar 09, 2011 
Printed Page 898
XSLT sample in the middle of the page

Incomplete errata. Author writes :

"In the example in the middle of the page, I [this is submitted by the author] used the advanced coding (\p{{Nd}}{{3}}), but I don't explain the \p modifier or the Nd character group until later in the appendix. Please take this out and use the simpler markup ([0-9]{{3}}) instead. So instead of: <xsl:analyze-string select="

but fails to complete the correction.

Marvin D. Hernandez  Jan 03, 2010 
Printed Page 922
Middle of the page

Incomplete errata. Author writes :

"The ordinal presentation modifier ("

but fails to complete the sentence/thought.

Marvin D. Hernandez  Jan 03, 2010