diff --git a/xml/tests/src/com/intellij/codeInsight/daemon/XmlHighlightingTest.java b/xml/tests/src/com/intellij/codeInsight/daemon/XmlHighlightingTest.java index 6f8e352e92e8..5436628a4429 100644 --- a/xml/tests/src/com/intellij/codeInsight/daemon/XmlHighlightingTest.java +++ b/xml/tests/src/com/intellij/codeInsight/daemon/XmlHighlightingTest.java @@ -2001,6 +2001,18 @@ public class XmlHighlightingTest extends DaemonAnalyzerTestCase { }, true, true); } + public void testDtdWithXsd() throws Exception { + doTest( + new VirtualFile[] { + getVirtualFile(BASE_PATH + "DtdWithXsd/help.xml"), + getVirtualFile(BASE_PATH + "DtdWithXsd/helptopic.xsd"), + getVirtualFile(BASE_PATH + "DtdWithXsd/html-entities.dtd") + }, + true, + false + ); + } + @Override protected void setUp() throws Exception { super.setUp(); diff --git a/xml/tests/testData/xml/DtdWithXsd/help.xml b/xml/tests/testData/xml/DtdWithXsd/help.xml new file mode 100644 index 000000000000..ad19019436fe --- /dev/null +++ b/xml/tests/testData/xml/DtdWithXsd/help.xml @@ -0,0 +1,107 @@ + + + +
+ + + +

Location of the IDE files depends on the operating system, and %product% version.

+

In this section:

+ +
+
+ + +

All the files are located under this directory by default:

+

Windows Vista, 7, 8

+ +<SYSTEM DRIVE>\Users\<USER ACCOUNT NAME>\.<PRODUCT><VERSION> + +

Windows XP

+ +<SYSTEM DRIVE>\Documents and Settings\<USER ACCOUNT NAME>\.<PRODUCT><VERSION> + +

Example

+ +
  • IntelliJ IDEA 13 Ultimate Edition:
    + +c:\Users\John\.IntelliJIdea13\ + +
  • +
  • IntelliJ IDEA 13 Community Edition + +c:\Users\John\.IdeaIC13\ + +
  • +
  • WebStorm 7.0, PhpStorm 7.0 + +c:\Users\John\.WebIde70\ + +
  • +
  • RubyMine 6.0 + +c:\Users\John\.RubyMine60\ + +
  • +
  • PyCharm 3.0 + +c:\Users\John\.PyCharm30\ + +
  • +
    + +

    Refer to the page Project and IDE Settings.

    +
    + +

    Product directory starting with dot can be found in the user home directory. The pattern is:

    + +~/.<PRODUCT><VERSION> + +

    ~ is an alias for the home directory, for example /home/john.

    +
    + + +
  • + Configuration
    + +~/Library/Preferences/<PRODUCT><VERSION> + +
  • +
  • + Caches
    + +~/Library/Caches/<PRODUCT><VERSION> + +
  • +
  • + Plugins
    + +~/Library/Application Support/<PRODUCT><VERSION> + +
  • +
  • + Logs
    + +~/Library/Logs/<PRODUCT><VERSION> + +
  • +
    +

    where <PRODUCT> is %product%(%product% Ultimate Edition), + IdeaIC (%product% Community Edition)WebIde (WebStrom and PhpStorm use this common directory).

    +
    +
    + + + topicId47 + + +
    \ No newline at end of file diff --git a/xml/tests/testData/xml/DtdWithXsd/helptopic.xsd b/xml/tests/testData/xml/DtdWithXsd/helptopic.xsd new file mode 100644 index 000000000000..22c719dc9087 --- /dev/null +++ b/xml/tests/testData/xml/DtdWithXsd/helptopic.xsd @@ -0,0 +1,1824 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xml/tests/testData/xml/DtdWithXsd/html-entities.dtd b/xml/tests/testData/xml/DtdWithXsd/html-entities.dtd new file mode 100644 index 000000000000..92cb01223ab2 --- /dev/null +++ b/xml/tests/testData/xml/DtdWithXsd/html-entities.dtd @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlTagImpl.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlTagImpl.java index 748e71bccf38..b030815ad2a4 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlTagImpl.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/XmlTagImpl.java @@ -891,16 +891,13 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag { if (parent instanceof XmlDocument) { final XmlExtension extension = XmlExtension.getExtensionByElement(parent); if (extension != null) { - final String[][] defaultNamespace = extension.getNamespacesFromDocument((XmlDocument)parent); + final String[][] defaultNamespace = extension.getNamespacesFromDocument((XmlDocument)parent, map != null); if (defaultNamespace != null) { if (map == null) { map = new BidirectionalMap(); } for (final String[] prefix2ns : defaultNamespace) { - final String prefix = prefix2ns[0]; - if (!map.containsKey(prefix) || extension.canOverrideNamespace(prefix)) { - map.put(prefix, getRealNs(prefix2ns[1])); - } + map.put(prefix2ns[0], getRealNs(prefix2ns[1])); } } } diff --git a/xml/xml-psi-impl/src/com/intellij/xml/XmlExtension.java b/xml/xml-psi-impl/src/com/intellij/xml/XmlExtension.java index cd132fc88713..f76f9b113982 100644 --- a/xml/xml-psi-impl/src/com/intellij/xml/XmlExtension.java +++ b/xml/xml-psi-impl/src/com/intellij/xml/XmlExtension.java @@ -87,22 +87,9 @@ public abstract class XmlExtension { return new TagNameReference(nameElement, startTagFlag); } - /** - * @deprecated use {@link com.intellij.xml.XmlExtension#getNamespacesFromDocument(XmlDocument parent)} instead - */ - @Deprecated @Nullable public String[][] getNamespacesFromDocument(final XmlDocument parent, boolean declarationsExist) { - return XmlUtil.getDefaultNamespaces(parent); - } - - @Nullable - public String[][] getNamespacesFromDocument(final XmlDocument parent) { - return getNamespacesFromDocument(parent, false); - } - - public boolean canOverrideNamespace(final String prefix) { - return false; + return declarationsExist ? null : XmlUtil.getDefaultNamespaces(parent); } public boolean canBeDuplicated(XmlAttribute attribute) {