This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
In the function conversion rules at 3.1.5, regarding the extra steps for 1.0 compatibility mode, sub-step 2 is applied only for xs:string and xs:string?, not for xs:string*. The first argument to fn:id is xs:string*, so it will bypass sub-step 1. The consequence of sub-step 2 not applying to fn:id is that fn:id(true()) would get a node whose ID is "true" in 1.0 but not in 2.0 (type error instead), regardless of compatibility mode. If that was your intent, please add that case to the list in Appendix I.1.
This incompatibility is documented (albeit briefly) in the entry for fn:id in Appendix D of the Functions and Operators specification. Michael Kay (personal response)
The joint WGs agreed that there is an incompatibility here, that it is acceptable, and that it is documented in the entry for fn:id() in the F + O document. We therefore propose to close the bug with no change to the documents. If this closure is acceptable, please mark the bug as closed.
I'm not satisfied with the resolution. Even in the F&O document, there is no mention in 15.5.2 (in the CR), only in a non-normative appendix. But I was hoping for a note in the XPath document, definitely in Appendix I and maybe also in 3.1.5, which is where I realized the incompatibility. For example, the note in 3.1.5 could be: NOTE: When an argument signature is disqualified from 1.0 compatibility rules for any reason (e.g., different occurrence indicator), the argument is disqualified for all compatibility conversion (e.g., type conversion). My concern is that I was looking at XPath in a frame of mind where I was thinking about casting boolean to string, but the answer came from an orthogonal concern. If the specs don't point it out, then they are more vulnerable to critics saying there are traps and gotchas in there.
Closing bug even though commenter was not fully satisfied; several months have passed without further discussion.