Saxon XInclude version 3.1.1
This release fixes a bug in parsing parentheses in fragment identifiers. I'd previously misunderstood the spec to say that all parentheses had to be escaped, but it very clearly says that only unbalanced parentheses have to be escaped.
I've also refactored the code a fair bit to try to improve fragment identifier processing in the face of both recursive XIncludes and XIncludes with same document references. The spec gives me a fair bit of latitude with respect to same document references. In 3.1.1, I attempt a two-pass approach. First any XIncludes that are not same document references are resolved, then, if any same document references were encountered, another pass is made to resolve them.