xml files are also evaluated during search
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
index 32ca6a3..dbb6628 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/META-INF/MANIFEST.MF
@@ -17,7 +17,8 @@
  org.eclipse.wst.wsdl;bundle-version="1.2.201",
  org.eclipse.core.resources;bundle-version="3.7.100",
  org.eclipse.ui.ide;bundle-version="3.7.0",
- org.eclipse.ui.forms;bundle-version="3.5.200"
+ org.eclipse.ui.forms;bundle-version="3.5.200",
+ org.eclipse.wst.sse.sieditor.core;bundle-version="1.0.0"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Export-Package: org.eclipse.wst.sse.sieditor.search.destinations,
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
index 1e4eb78..3555c51 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/AbstractSearchQueryOperation.java
@@ -11,6 +11,7 @@
 package org.eclipse.wst.sse.sieditor.search.provider;
 
 import java.util.LinkedHashSet;
+import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.resources.IContainer;
@@ -22,7 +23,9 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.platform.discovery.runtime.api.ISearchParameters;
 import org.eclipse.platform.discovery.util.api.longop.ILongOperation;
 import org.eclipse.platform.discovery.util.api.longop.LongOpCanceledException;
@@ -33,10 +36,14 @@
 import org.eclipse.wst.sse.sieditor.search.ui.tree.RootTreeNode;
 import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
 import org.eclipse.wst.wsdl.Definition;
+import org.eclipse.wst.wsdl.internal.util.WSDLResourceFactoryImpl;
 import org.eclipse.wst.wsdl.util.WSDLResourceImpl;
 
 public abstract class AbstractSearchQueryOperation implements ILongOperation<ITreeNode> {
 
+    protected static final String XSD_FILE_EXTENSION = "xsd"; //$NON-NLS-1$
+    protected static final String WSDL_FILE_EXTENSION = "wsdl"; //$NON-NLS-1$
+    protected static final String XML_FILE_EXTENSION = "xml"; //$NON-NLS-1$
     protected final ISearchParameters searchParams;
 
     public AbstractSearchQueryOperation(ISearchParameters searchParams) {
@@ -101,29 +108,45 @@
     protected abstract boolean isFileThatMayHaveTheSearchedContenet(IFile file);
 
     protected boolean isXmlFileExtension(String fileExtension) {
-        return checkForFileExtension(fileExtension, "xml"); //$NON-NLS-1$
+        return checkForFileExtension(fileExtension, XML_FILE_EXTENSION);
     }
 
     protected boolean isWsdlFileExtension(String fileExtension) {
-        return checkForFileExtension(fileExtension, "wsdl"); //$NON-NLS-1$
+        return checkForFileExtension(fileExtension, WSDL_FILE_EXTENSION);
     }
 
     protected boolean isXsdFileExtension(String fileExtension) {
-        return checkForFileExtension(fileExtension, "xsd"); //$NON-NLS-1$
+        return checkForFileExtension(fileExtension, XSD_FILE_EXTENSION);
     }
 
     private boolean checkForFileExtension(String fileExtension, String searchedFileExtension) {
-        return fileExtension == null ? false : searchedFileExtension.equals(fileExtension.toLowerCase());
+        return fileExtension == null ? false : searchedFileExtension.equalsIgnoreCase(fileExtension);
     }
 
     protected abstract ITreeNode getRootTreeNode(Set<IFile> files);
 
-    protected IWsdlModelRoot getWsdlModelRootForFile(IFile file, ResourceSet resourceSet) {
-        WSDLResourceImpl resource = (WSDLResourceImpl) resourceSet.getResource(createFileUri(file), true);
-        Definition definition = resource.getDefinition();
+    protected IWsdlModelRoot getWsdlModelRootForFile(IFile file) {
+        Map<String, Object> extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
+        Object currentXmlResourceFactoryWithLowerCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toLowerCase());
+        Object currentXmlResourceFactoryWithUpperCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toUpperCase());
+        Object currentWsdlResourceFactoryWithUpperCase = extensionToFactoryMap.get(WSDL_FILE_EXTENSION.toUpperCase());
+        try {
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), new WSDLResourceFactoryImpl());
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), new WSDLResourceFactoryImpl());
+            extensionToFactoryMap.put(WSDL_FILE_EXTENSION.toUpperCase(), new WSDLResourceFactoryImpl());
 
-        IWsdlModelRoot modelRoot = WSDLFactory.getInstance().createWSDLModelRoot(definition);
-        return modelRoot;
+            ResourceSet resourceSet = new ResourceSetImpl();
+
+            WSDLResourceImpl resource = (WSDLResourceImpl) resourceSet.getResource(createFileUri(file), true);
+            Definition definition = resource.getDefinition();
+
+            IWsdlModelRoot modelRoot = WSDLFactory.getInstance().createWSDLModelRoot(definition);
+            return modelRoot;
+        } finally {
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), currentXmlResourceFactoryWithLowerCase);
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), currentXmlResourceFactoryWithUpperCase);
+            extensionToFactoryMap.put(WSDL_FILE_EXTENSION.toUpperCase(), currentWsdlResourceFactoryWithUpperCase);
+        }
     }
 
     protected URI createFileUri(IFile file) {
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
index 4658522..1af0e8d 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/wsdl/WsdlSearchQueryOperation.java
@@ -14,7 +14,6 @@
 import java.util.Set;
 
 import org.eclipse.core.resources.IFile;
-import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.platform.discovery.runtime.api.ISearchParameters;
 import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;
 import org.eclipse.wst.sse.sieditor.model.wsdl.api.IServiceInterface;
@@ -46,11 +45,9 @@
     @Override
     protected ITreeNode getRootTreeNode(Set<IFile> files) {
         RootTreeNode rootTreeNode = new RootTreeNode();
-        final ResourceSetImpl resourceSet = new ResourceSetImpl();
-
         for (IFile file : files) {
             FileNode fileNode = new FileNode(file, rootTreeNode, false);
-            IWsdlModelRoot wsdlModelRoot = getWsdlModelRootForFile(file, resourceSet);
+            IWsdlModelRoot wsdlModelRoot = getWsdlModelRootForFile(file);
 
             if (isByNamespaceHierarchy() || isByFilesHierarchy()) {
                 NamespaceNode namespaceNode = new NamespaceNode(wsdlModelRoot.getDescription(), fileNode);
diff --git a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
index 1ac7517..0159d85 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.search/src/org/eclipse/wst/sse/sieditor/search/provider/xsd/XsdSearchQueryOperation.java
@@ -12,9 +12,11 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.core.resources.IFile;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
 import org.eclipse.platform.discovery.runtime.api.ISearchDestination;
@@ -41,6 +43,7 @@
 import org.eclipse.wst.sse.sieditor.ui.v2.factory.TreeNodeMapper;
 import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
 import org.eclipse.xsd.XSDSchema;
+import org.eclipse.xsd.util.XSDResourceFactoryImpl;
 import org.eclipse.xsd.util.XSDResourceImpl;
 
 public class XsdSearchQueryOperation extends AbstractSearchQueryOperation {
@@ -62,12 +65,11 @@
     protected ITreeNode getRootTreeNode(Set<IFile> files) {
         RootTreeNode rootTreeNode = new RootTreeNode();
         final TreeNodeMapper treeNodeMapper = new TreeNodeMapper();
-        final ResourceSet resourceSet = new ResourceSetImpl();
 
         for (IFile file : files) {
             FileNode fileNode = new FileNode(file, rootTreeNode, isXsdFileExtension(file.getFileExtension()));
 
-            Collection<ISchema> schemas = getSchemasFromFile(file, resourceSet);
+            Collection<ISchema> schemas = getSchemasFromFile(file);
             for (ISchema schema : schemas) {
                 if (isByNamespaceHierarchy() || isByFilesHierarchy()) {
                     NamespaceNode namespaceNode = new NamespaceNode(schema, fileNode);
@@ -86,33 +88,49 @@
         return rootTreeNode;
     }
 
-    private Collection<ISchema> getSchemasFromFile(IFile file, ResourceSet resourceSet) {
+    private Collection<ISchema> getSchemasFromFile(IFile file) {
         Collection<ISchema> schemasInFile = new ArrayList<ISchema>();
         String fileExtension = file.getFileExtension();
         if (isXsdFileExtension(fileExtension) || isXmlFileExtension(fileExtension)) {
-            ISchema schemaFromXsdFile = getSchemaFromXsdFile(file, resourceSet);
+            ISchema schemaFromXsdFile = getSchemaFromXsdFile(file);
             if (schemaFromXsdFile != null) {
                 schemasInFile.add(schemaFromXsdFile);
             }
         }
 
         if (isWsdlFileExtension(fileExtension) || isXmlFileExtension(fileExtension)) {
-            schemasInFile.addAll(getSchemasFromWsdl(file, resourceSet));
+            schemasInFile.addAll(getSchemasFromWsdl(file));
         }
 
         return schemasInFile;
     }
 
-    private Collection<ISchema> getSchemasFromWsdl(IFile file, ResourceSet resourceSet) {
-        IWsdlModelRoot modelRoot = getWsdlModelRootForFile(file, resourceSet);
+    private Collection<ISchema> getSchemasFromWsdl(IFile file) {
+        IWsdlModelRoot modelRoot = getWsdlModelRootForFile(file);
         return modelRoot.getDescription().getContainedSchemas();
     }
 
-    private ISchema getSchemaFromXsdFile(IFile file, ResourceSet resourceSet) {
-        XSDResourceImpl resource = (XSDResourceImpl) resourceSet.getResource(createFileUri(file), true);
-        XSDSchema schema = resource.getSchema();
-        IXSDModelRoot modelRoot = XSDFactory.getInstance().createXSDModelRoot(schema);
-        return modelRoot.getSchema();
+    private ISchema getSchemaFromXsdFile(IFile file) {
+        Map<String, Object> extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
+        Object currentXmlResourceFactoryWithLowerCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toLowerCase());
+        Object currentXmlResourceFactoryWithUpperCase = extensionToFactoryMap.get(XML_FILE_EXTENSION.toUpperCase());
+        Object currentXsdResourceFactoryWithUpperCase = extensionToFactoryMap.get(XSD_FILE_EXTENSION.toUpperCase());
+        try {
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), new XSDResourceFactoryImpl());
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), new XSDResourceFactoryImpl());
+            extensionToFactoryMap.put(XSD_FILE_EXTENSION.toUpperCase(), new XSDResourceFactoryImpl());
+
+            ResourceSet resourceSet = new ResourceSetImpl();
+
+            XSDResourceImpl resource = (XSDResourceImpl) resourceSet.getResource(createFileUri(file), true);
+            XSDSchema schema = resource.getSchema();
+            IXSDModelRoot modelRoot = XSDFactory.getInstance().createXSDModelRoot(schema);
+            return modelRoot.getSchema();
+        } finally {
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toLowerCase(), currentXmlResourceFactoryWithLowerCase);
+            extensionToFactoryMap.put(XML_FILE_EXTENSION.toUpperCase(), currentXmlResourceFactoryWithUpperCase);
+            extensionToFactoryMap.put(XSD_FILE_EXTENSION.toUpperCase(), currentXsdResourceFactoryWithUpperCase);
+        }
     }
 
     private void addTypesToParentNode(ISchema schema, ITreeNodeWithCustomizableChildren parent, TreeNodeMapper treeNodeMapper) {