Efficient Approaches for Querying XML Data: Keyword-Based, Personalized, and Distributed Queries