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 }