IDEA-78840 generate xml from xsd fails

This commit is contained in:
Dmitry Avdeev
2018-09-17 17:48:13 +03:00
parent e1df0c050b
commit 4035aaec9b
4 changed files with 17 additions and 2 deletions

View File

@@ -26,6 +26,7 @@ import com.intellij.psi.xml.XmlAttribute;
import com.intellij.psi.xml.XmlDocument;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.ArrayUtil;
import com.intellij.xml.XmlElementDescriptor;
import com.intellij.xml.XmlNSDescriptor;
import com.intellij.xml.impl.schema.XmlNSDescriptorImpl;
@@ -200,8 +201,9 @@ public class Xsd2InstanceUtils {
} else if ("schemaLocation".equals(xmlAttribute.getName())) {
final PsiReference[] references = xmlAttribute.getValueElement().getReferences();
if (references.length > 0) {
PsiElement psiElement = references[0].resolve();
PsiReference reference = ArrayUtil.getLastElement(references);
if (reference != null) {
PsiElement psiElement = reference.resolve();
if (psiElement instanceof XmlFile) {
final String s = processAndSaveAllSchemas(((XmlFile) psiElement), scannedToFileName, schemaReferenceProcessor);

View File

@@ -39,6 +39,12 @@ class GenerateXmlFromXsdTest: LightCodeInsightFixtureTestCase() {
Disposer.dispose(dialog.disposable)
}
fun testRelativePath() {
val file = LocalFileSystem.getInstance().findFileByPath("$testDataPath/top/top.xsd")
val dialog = GenerateInstanceDocumentFromSchemaDialog(project, file)
GenerateInstanceDocumentFromSchemaAction.doAction(project, dialog)
Disposer.dispose(dialog.disposable)
}
override fun getBasePath(): String = "/xml/tests/testData/generate"
}

View File

@@ -0,0 +1,2 @@
<schema xmlns="http://www.w3.org/2001/XMLSchema">
</schema>

View File

@@ -0,0 +1,5 @@
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="test">
<import schemaLocation="../foo.xsd"/>
<element name="root"/>
</schema>