idref() applied to a list containing both IDREF and non-IDREF values
When an element or attribute has a type that defines a list whose item type is a union permitting both IDREF and non-IDREF values, then the rules of the idref() function are that it considers both IDREF and IDREF values in the list, provided (a) that they conform to the lexical rules for an IDREF, and (b) that the node is marked with the is-idrefs property. The node is marked with the is-idrefs property if and only if its typed value contains at least one IDREF value. So a non-IDREF value in the list is matched by the idref() function if and only if there is also an IDREF present in the value. Saxon matches it whether or not there is also an IDREF present in the list.
Test case added in QT3: fn-idref-33.
Please register to edit this issue