This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
We say under generate-id(): An implementation is under no obligation to generate the same identifiers each time a document is transformed or queried. This is a very informal way of saying that the uniqueness rule is scoped to a single execution scope. It casually implies that there is a concept of node identity ("a document") that transcends execution scope, which formally speaking is not the case (although XQuery Update might suggest otherwise). And it raises questions about situations where a transformation or query can involve multiple execution scopes, for example when fn:transform() is called, or when XSLT static expressions are used. I propose the following slightly more formal statement. After "In other cases, the function returns a string that uniquely identifies a given node." add "More formally, it is guaranteed that within a single *execution scope*, codepoint-equal(generate-id($N), generate-id($M)) is true if and only if ($M is $N) is true." and move the sentence "An implementation is under no obligation to generate the same identifiers each time a document is transformed or queried." to the (non-normative) notes, since its meaning depends on informal notions of identity.
Anticipating WG approval, I have applied the suggested changes to the spec.
The WG agreed the changes, which are already in the spec.