diff --git a/xml/impl/src/com/intellij/codeInsight/completion/ExtendedTagInsertHandler.java b/xml/impl/src/com/intellij/codeInsight/completion/ExtendedTagInsertHandler.java index dc6dafe87453..f774f5c7a1fb 100644 --- a/xml/impl/src/com/intellij/codeInsight/completion/ExtendedTagInsertHandler.java +++ b/xml/impl/src/com/intellij/codeInsight/completion/ExtendedTagInsertHandler.java @@ -57,9 +57,9 @@ public class ExtendedTagInsertHandler extends XmlTagInsertHandler { public void handleInsert(final InsertionContext context, final LookupElement item) { - final XmlFile contextfile = (XmlFile)context.getFile(); - final XmlExtension extension = XmlExtension.getExtension(contextfile); - final XmlFile file = extension.getContainingFile(contextfile); + final XmlFile contextFile = (XmlFile)context.getFile(); + final XmlExtension extension = XmlExtension.getExtension(contextFile); + final XmlFile file = extension.getContainingFile(contextFile); final Project project = context.getProject(); assert file != null; diff --git a/xml/impl/src/com/intellij/xml/DefaultXmlExtension.java b/xml/impl/src/com/intellij/xml/DefaultXmlExtension.java index 5eb23b67699f..95137042f893 100644 --- a/xml/impl/src/com/intellij/xml/DefaultXmlExtension.java +++ b/xml/impl/src/com/intellij/xml/DefaultXmlExtension.java @@ -52,8 +52,8 @@ public class DefaultXmlExtension extends XmlExtension { public List> getAvailableTagNames(@NotNull final XmlFile file, @NotNull final XmlTag context) { final Set namespaces = new HashSet(Arrays.asList(context.knownNamespaces())); - final XmlSchemaProvider provider = XmlSchemaProvider.getAvailableProvider(file); - if (provider != null) { + final List providers = XmlSchemaProvider.getAvailableProviders(file); + for (XmlSchemaProvider provider : providers) { namespaces.addAll(provider.getAvailableNamespaces(file, null)); } final ArrayList nsInfo = new ArrayList(); @@ -70,11 +70,13 @@ public class DefaultXmlExtension extends XmlExtension { @NotNull public Set getNamespacesByTagName(@NotNull final String tagName, @NotNull final XmlFile context) { - final XmlSchemaProvider provider = XmlSchemaProvider.getAvailableProvider(context); - if (provider == null) { - return Collections.emptySet(); + final List providers = XmlSchemaProvider.getAvailableProviders(context); + + HashSet set = new HashSet(); + for (XmlSchemaProvider provider : providers) { + set.addAll(provider.getAvailableNamespaces(context, tagName)); } - return provider.getAvailableNamespaces(context, tagName); + return set; } public static Set filterNamespaces(final Set namespaces, final String tagName, final XmlFile context) { @@ -181,10 +183,17 @@ public class DefaultXmlExtension extends XmlExtension { } } - final XmlSchemaProvider provider = XmlSchemaProvider.getAvailableProvider(file); + final List providers = XmlSchemaProvider.getAvailableProviders(file); + XmlSchemaProvider prefixProvider = null; String prefix = nsPrefix; - if (prefix == null && provider != null) { - prefix = provider.getDefaultPrefix(namespace, file); + if (prefix == null) { + for (XmlSchemaProvider provider : providers) { + prefix = provider.getDefaultPrefix(namespace, file); + if (prefix != null) { + prefixProvider = provider; + break; + } + } } if (prefix == null) { prefix = ""; @@ -201,8 +210,8 @@ public class DefaultXmlExtension extends XmlExtension { String location = null; if (namespace.length() > 0) { - if (provider != null) { - final Set strings = provider.getLocations(namespace, file); + if (prefixProvider != null) { + final Set strings = prefixProvider.getLocations(namespace, file); if (strings != null && strings.size() > 0) { location = strings.iterator().next(); }