Reasoning about XML Constraints