This chapter looks in some detail at the XPath type system; that is, the types of the values that can be manipulated by XPath expressions and XSLT instructions.
XPath is an expression language. Every expression takes one or more values as its inputs, and produces a value as its output. The purpose of this chapter is to explain exactly what these values can be.
Chapter 2 presented the XDM tree model with its seven node kinds — that's part of the picture, because XPath expressions will often be handling nodes in a tree. The other half of the picture is concerned with atomic values (strings, numbers, booleans, and the like), and it's these values that we'll be studying in this chapter.
One of the things an expression language tries to achieve is that wherever you can use a value, you can replace it with an expression that is evaluated to produce that value. So if
«2 + 2» is a valid expression, then
«(6 − 4) + (1 + 1)» should also be a valid expression. This property is called composability: expressions can be used anywhere that values are permitted. One of the important features that make a language composable is that the possible results of an expression are the same as the possible inputs. This feature is called closure: every expression produces a result that is in the same space of possible values as the space from which the inputs are drawn.
The role of the data model is to describe this space of possible values, and the role of the type system is to define the rules ...