# Changes to Functions and Operators

The new rules for effective boolean value, and for the `boolean()` function, have been implemented. These rules make it a type error to ask for the effective boolean value of anything other than a sequence starting with a node, or a singleton boolean, number, or string. For example, testing the effective boolean value of an `xs:anyURI` value or of a sequence of integers is now an error.

Saxon's two native tree models now implement the W3C `xml:id` proposal. An attribute named `xml:id` is considered to be an ID attribute for the purposes of the id() function. Note that when using schema or DTD validation, the attribute is not permitted unless the element declaration explicitly allows it, and it must then be declared as of type ID.

The new function `prefix-from-QName` is implemented.

In the TinyTree model, the base URI of a processing instruction is now maintained, and is accessible to the `base-uri()` function. Previously, the base URI was always taken to be the same as that of the parent element or document node.

Casting or constructing a QName or NOTATION is now permitted only if the argument is supplied as a string literal. (Saxon is actually a bit more flexible than this, and allows a compile-time expression.)

Next