I have a love-hate relationship with XML. Some things about XML drive me crazy. The differences between XPath, XQuery, and XSLT are examples. XPath 1.0 (the 2.0 version is not widely used yet) was originally intended to provide a way to extract nodes from an XML document. But XPath can also be used to compute values from the contents of an XML document. XPath was originally intended for use with XSLT, which is now used primarily for transforming XML but which was originally intended for use as a way to format XML data. XQuery was originally intended as a kind of SQL for XML data — that is, a way to extract and compute XML data. But XQuery can also be used to transform XML. In short, XPath, XQuery, and XSLT are examples of what can go wrong when technologies are designed by committee. Here, there are overlapping functionalities which basically only serve to confuse the development community (with regards to best practice and usage issues). Ultimately, the technology community as a whole will decide what works best and either XPath or XQuery will possibly fade away.