diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltChecker.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltChecker.java index a5409608c723..7b8b76b3e6f1 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltChecker.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltChecker.java @@ -66,25 +66,25 @@ public class XsltChecker implements NanoXmlBuilder { private void checkVersion(String value, State yes) { if (isVersion1(value)) { myState = yes; - } else if (isVersion2(value)) { + } else if (isVersion2(value) || isVersion3(value)) { myState = State.VERSION2; } else { myState = State.NO; } } - public static boolean isSupportedVersion(String value) { - return isVersion1(value) || isVersion2(value); - } - - public static boolean isVersion1(String value) { + private static boolean isVersion1(String value) { return "1.0".equals(value) || "1.1".equals(value); } - public static boolean isVersion2(String value) { + private static boolean isVersion2(String value) { return "2.0".equals(value); } + private static boolean isVersion3(String value) { + return "3.0".equals(value); + } + @Override public void elementAttributesProcessed(String name, String nsPrefix, String nsURI) throws Exception { NanoXmlBuilder.stop(); // the first element (or its attrs) decides - stop here @@ -99,10 +99,6 @@ public class XsltChecker implements NanoXmlBuilder { return myState == State.YES || myState == State.SIMPLIFIED; } - public boolean isSimplifiedSyntax() { - return myState == State.SIMPLIFIED; - } - public static LanguageLevel getLanguageLevel(String value) { if (value == null) { return LanguageLevel.NONE; @@ -113,6 +109,9 @@ public class XsltChecker implements NanoXmlBuilder { if (isVersion2(value)) { return LanguageLevel.V2; } + if (isVersion3(value)) { + return LanguageLevel.V2; + } return LanguageLevel.NONE; } diff --git a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2HighlightingTest.java b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2HighlightingTest.java index d42b95d88ad4..d5e8c793ce10 100644 --- a/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2HighlightingTest.java +++ b/plugins/xpath/xpath-lang/test/org/intellij/lang/xpath/xslt/Xslt2HighlightingTest.java @@ -56,6 +56,10 @@ public class Xslt2HighlightingTest extends TestBase { doXsltHighlighting("move-def.xsd"); } + public void testXslt3() { + doXsltHighlighting(); + } + private void doXsltHighlighting(String... moreFiles) { final String name = getTestFileName(); myFixture.testHighlighting(true, false, false, ArrayUtil.mergeArrays(new String[]{ name + ".xsl" }, moreFiles)); diff --git a/plugins/xpath/xpath-lang/testData/xslt2/highlighting/xslt3.xsl b/plugins/xpath/xpath-lang/testData/xslt2/highlighting/xslt3.xsl new file mode 100644 index 000000000000..8e62774149f8 --- /dev/null +++ b/plugins/xpath/xpath-lang/testData/xslt2/highlighting/xslt3.xsl @@ -0,0 +1,6 @@ + + + + bar" select="concat($foo, '/', $unknown)"/> + + \ No newline at end of file