Default values

It is an error to expand a user variable that has not been set. An undefined variable will generally be evaluated as 0 in a value expression, and the empty string otherwise, but this is not guaranteed. Note that such use does not set the variable — only the <set/> command can change the value of a user variable.

Of course, system variables are pre-set so the question of default values doesn't arise. Attribute variables, if the attribute is not present, default to the value specified in the DTD. If there is no DTD, or in the case of custom markers, it is an error to attempt to use an attribute that is not explicitly supplied. If a DTD has been provided then it is an error to use an attribute not included in an ATTLIST command.