Read XSLT 2.0 and XPath 2.0 Programmer's Reference, 4th Edition Online
Authors: Michael Kay
As with most languages, the first stage in processing an XPath expression is lexical analysis, also known as tokenizing. The first stage of identifying the tokens is done fairly mechanically, and does not depend in any way on the syntactic context. At each stage, the longest sequence of characters that could comprise a single token is read. There are a few places where this can lead to surprises; for example,
x+1
is read as three tokens, whereas
x -1
is read as a single token. This is because XML names can contain a
-
character but not a
+
character. To ensure that
x -1
is read as a subtraction rather than as a single name, you need a space before the
-
for example
x -1