mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-129370 Support XML Schema (XSD) 1.1
This commit is contained in:
@@ -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()},
|
||||
|
||||
@@ -49,12 +49,7 @@
|
||||
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The simpleType element and all of its members are defined
|
||||
in datatypes.xsd</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:include schemaLocation="datatypes.xsd"/>
|
||||
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2001/xml.xsd">
|
||||
<xs:annotation>
|
||||
|
||||
+10
-2
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user