diff --git a/xml/impl/src/com/intellij/xml/actions/validate/StdErrorReporter.java b/xml/impl/src/com/intellij/xml/actions/validate/StdErrorReporter.java
index ac63a174ee57..88736b8ef9e0 100644
--- a/xml/impl/src/com/intellij/xml/actions/validate/StdErrorReporter.java
+++ b/xml/impl/src/com/intellij/xml/actions/validate/StdErrorReporter.java
@@ -147,7 +147,7 @@ public class StdErrorReporter extends ErrorReporter {
new Runnable() {
@Override
public void run() {
- final VirtualFile file = myHandler.getFile(ex.getPublicId(), ex.getSystemId());
+ final VirtualFile file = myHandler.getProblemFile(ex);
myErrorsView.addMessage(
problemType == ValidateXmlActionHandler.ProblemType.WARNING ? MessageCategory.WARNING : MessageCategory.ERROR,
new String[]{ex.getLocalizedMessage()},
diff --git a/xml/xml-psi-impl/resources/standardSchemas/XMLSchema-1_1/XMLSchema.xsd b/xml/xml-psi-impl/resources/standardSchemas/XMLSchema-1_1/XMLSchema.xsd
index dfed6e14eedd..fa36f543b33c 100644
--- a/xml/xml-psi-impl/resources/standardSchemas/XMLSchema-1_1/XMLSchema.xsd
+++ b/xml/xml-psi-impl/resources/standardSchemas/XMLSchema-1_1/XMLSchema.xsd
@@ -49,12 +49,7 @@
-
-
- The simpleType element and all of its members are defined
- in datatypes.xsd
-
-
+
diff --git a/xml/xml-psi-impl/src/com/intellij/xml/actions/validate/ValidateXmlActionHandler.java b/xml/xml-psi-impl/src/com/intellij/xml/actions/validate/ValidateXmlActionHandler.java
index 2e851e555812..0079be214349 100644
--- a/xml/xml-psi-impl/src/com/intellij/xml/actions/validate/ValidateXmlActionHandler.java
+++ b/xml/xml-psi-impl/src/com/intellij/xml/actions/validate/ValidateXmlActionHandler.java
@@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.xml.*;
@@ -76,9 +77,16 @@ public class ValidateXmlActionHandler {
myErrorReporter = errorReporter;
}
- public VirtualFile getFile(String publicId, String systemId) {
+ public VirtualFile getProblemFile(SAXParseException ex) {
+ String publicId = ex.getPublicId();
+ String systemId = ex.getSystemId();
if (publicId == null) {
if (systemId != null) {
+ if (systemId.startsWith("file:/")) {
+ VirtualFile file = VirtualFileManager.getInstance()
+ .findFileByUrl(systemId.startsWith("file://") ? systemId : systemId.replace("file:/", "file://"));
+ if (file != null) return file;
+ }
final String path = myXmlResourceResolver.getPathByPublicId(systemId);
if (path != null) return UriUtil.findRelativeFile(path,null);
final PsiFile file = myXmlResourceResolver.resolve(null, systemId);
@@ -95,7 +103,7 @@ public class ValidateXmlActionHandler {
public String buildMessageString(SAXParseException ex) {
String msg = "(" + ex.getLineNumber() + ":" + ex.getColumnNumber() + ") " + ex.getMessage();
- final VirtualFile file = getFile(ex.getPublicId(), ex.getSystemId());
+ final VirtualFile file = getProblemFile(ex);
if ( file != null && !file.equals(myFile.getVirtualFile())) {
msg = file.getName() + ":" + msg;
diff --git a/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java b/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java
index debb58ae0891..71ad2d55e107 100644
--- a/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java
+++ b/xml/xml-psi-impl/src/com/intellij/xml/impl/ExternalDocumentValidator.java
@@ -146,7 +146,7 @@ public class ExternalDocumentValidator {
return;
}
- final VirtualFile errorFile = myHandler.getFile(e.getPublicId(), e.getSystemId());
+ final VirtualFile errorFile = myHandler.getProblemFile(e);
if (!Comparing.equal(errorFile, file.getVirtualFile()) && errorFile != null) {
return; // error in attached schema
}