diff --git a/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java b/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java
index 5e2f202fcd75..05eb6a341b17 100644
--- a/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java
+++ b/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java
@@ -677,6 +677,10 @@ public class XmlCompletionTest extends LightCodeInsightFixtureTestCase {
myFixture.testCompletionVariants("Substitute/test.xml", "b:instance", "instance");
}
+ public void testAfterPrefix() throws Exception {
+ myFixture.testCompletion("Substitute/testAfterPrefix.xml", "Substitute/testAfterPrefix_after.xml", "Substitute/schema-a.xsd", "Substitute/schema-b.xsd");
+ }
+
public void testEnumeratedTagValue() throws Exception {
myFixture.configureByFile("tagValue/enumerated.xsd");
myFixture.testCompletionVariants("tagValue/completeEnum.xml", "none", "standard");
diff --git a/xml/tests/testData/completion/Substitute/testAfterPrefix.xml b/xml/tests/testData/completion/Substitute/testAfterPrefix.xml
new file mode 100644
index 000000000000..fe3effdcc3fa
--- /dev/null
+++ b/xml/tests/testData/completion/Substitute/testAfterPrefix.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml b/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml
new file mode 100644
index 000000000000..b6231adb7e63
--- /dev/null
+++ b/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java
index 063a169aab14..23cb9dbee8f6 100644
--- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java
+++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java
@@ -117,9 +117,7 @@ public class SchemaReferencesProvider extends PsiReferenceProvider {
}
public TextRange getRangeInElement() {
- return myElement instanceof XmlAttributeValue
- ? ((XmlAttributeValue)myElement).getValueTextRange()
- : new TextRange(1,myElement.getTextLength()-1);
+ return new TextRange(1,myElement.getTextLength()-1);
}
@Nullable
diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java
index 9ff2f8aeb175..b9840d656e16 100644
--- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java
+++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java
@@ -44,7 +44,7 @@ public class TagNameVariantCollector {
@Nullable List nsInfo) {
XmlElementDescriptor elementDescriptor = null;
- String elementNamespace = null;
+ String elementNamespace = element.getNamespacePrefix().isEmpty() ? null : element.getNamespace();
final Map descriptorsMap = new HashMap();
PsiElement context = element.getParent();
@@ -62,7 +62,9 @@ public class TagNameVariantCollector {
descriptorsMap.put(namespace, descriptor);
if(elementDescriptor == null) {
elementDescriptor = descriptor;
- elementNamespace = namespace;
+ if (elementNamespace == null) {
+ elementNamespace = namespace;
+ }
}
}
}