Abstract: XML data is stored in the form of a text document. Hence different applications can share the XML data. It is platform independent i.e. it can be migrated to any operating system without any changes. Moreover it is self describing and extensible as a result of which it has became an emerging standard for data exchange and storage over the web. With such growing presence of XML in database technology there is a growing need to develop efficient storage and indexing techniques for querying large repositories of XML documents. In this paper we review some of the important indexing techniques for XML and compare these techniques on the basis of key factors for storing and querying XML documents. The real work in indexing of XML started with the introduction of inverted list to store XML data. This inverted list with different query algorithm could answer a variety of Xpath queries but with some limitations. Inverted list was further improved by the concept of structure index which is a compact summarization of tree representation of XML document. Very recently efficient indexing techniques were implemented. These recent techniques made use of efficient data structures such as the B+ tree for storing and querying the XML data. Experimental results of these techniques show a significant improvement in performance over the inverted list technique.