Datypic Logo


Priscilla Walmsley (pwalmsley@datypic.com)

ISBN: 0596006349

1st edition, 2007, O'Reilly Media, Inc.


Please report any errors or comments to the author. All feedback is welcome. You may also wish to check the errata for this book on the O'Reilly site.

Strikethrough indicates deleted text and underline indicates inserted text.

Chapter 1

  • p. 7, Example 1-6. (Online edition only). The second line of the example should not have a "d" at the end: let $name := $product/name d.
  • p. 8. Second paragraph from bottom. The last sentence be corrected as: The content outside the curly braces, namely the strings "There are " and " products." appear literally in the results, as textual content of the ulh1 element.

Chapter 3

  • p. 34, between-inclusive. The description of the function states that it performs a "value comparison", but it is actually performing a "general comparison".
  • p. 38, Table 3-5. There is an extra space in the path expression in the third row of the first column. It should be: not(doc("catalog.xml")/catalog/product)

Chapter 4

  • p. 45, Table 4-4. The last row should read parent::node()/number (with the added parentheses).

Chapter 6

  • p. 79. The end of the first paragraph on page should be changed as "and it should not cannot be referenced in the let clause itself, as in:". Also, the first sentence of second paragraph should be changed as "This is not illegal, but it is actually declaring a new variable with the same name, so it will have unexpected..."

Chapter 8

  • p. 108. The tenth line of code should be changed as follows: let $actualDiscount := min(($maxDiscount, $newDdiscount))

Chapter 9

  • p. 116. The last sentence of the second paragraph on page should start with "This variable, which is followedpreceded by the keyword at, is... "

Chapter 11

  • p. 158. The last heading on the page should read "Casting tofrom xs:string or xs:untypedAtomic".

Chapter 24

  • p. 299. The third line of the first example on the page should be modified as follows: (matches($prod/name,'^F.*') or matches($prod/name,'^G.*')).
  • p. 299. The third line of the third example on the page should be modified as follows: not(matches($prod/name,'^F.*')).

Last updated July 15, 2014