Well strangely I am reply to my posted query .. In the given example, it is expected that template in the XSLT, , should remove all occurrence of "outstation" elements from the XML document. This XSLT will work fine for any XML document which doesn't has a "DEFAULT NAMESPACE" declared in root element. In given example, I have declared a default namespace in root element as 'xmlns="http://www.contacts.com/transform"'. Because of the default namespace, the expanded name of element is pair of URI name and Element name (URI name here is "http://www.contacts.com/transform"). So the template defined in XSLT for "outstation" element will fail to match any element in XML file. As the namespaces link the XML & XSLT through a URI. So the solution to this problem is to add a namespace prefix with the namespace name "http://www.contacts.com/transform" in the xslt file and then use the prefix in the XPath statements as shown below: Solution is in XSLT: ... ... ...