From d6a615dadd5c74d129b0285d4d261cbfb5700bf0 Mon Sep 17 00:00:00 2001 From: azerr Date: Wed, 16 Nov 2022 16:08:32 +0100 Subject: [PATCH] Referenced RelaxNG schema not found via XML catalog Fixes https://github.com/redhat-developer/vscode-xml/issues/804 Signed-off-by: azerr --- .../extensions/relaxng/jing/SchemaProvider.java | 2 +- .../RelaxNGDiagnosticsWithCatalogTest.java | 12 ++++++++++++ .../test/resources/relaxng/catalog-relaxng.xml | 2 ++ .../src/test/resources/relaxng/schema.rng | 15 +++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 org.eclipse.lemminx/src/test/resources/relaxng/schema.rng diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/jing/SchemaProvider.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/jing/SchemaProvider.java index 6cf06918b..58e687cb8 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/jing/SchemaProvider.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/extensions/relaxng/jing/SchemaProvider.java @@ -88,7 +88,7 @@ private static InputSource createInputSource(RelaxNGDescription description, XML throws MalformedURIException, IOException { XMLInputSource source = entityResolver.resolveEntity(description); return source.getByteStream() != null ? new InputSource(source.getByteStream()) - : new InputSource(description.getExpandedSystemId()); + : new InputSource(source.getSystemId()); } private static SchemaReader getSchemaReader(String systemId) { diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsWithCatalogTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsWithCatalogTest.java index e7c93bd3f..cd6ea2a29 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsWithCatalogTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/extensions/relaxng/xml/diagnostics/RelaxNGDiagnosticsWithCatalogTest.java @@ -36,4 +36,16 @@ public void incomplete_element_required_element_missing() throws Exception { d(0, 1, 4, RelaxNGErrorCode.incomplete_element_required_element_missing)); } + @Test + public void unknown_element() throws Exception { + String xml = "\r\n" + // + "\r\n" + + // + " \r\n" + // + " I am valid element\r\n" + // + " I am invalid b element\r\n" + // <-- element "invalid" not allowed anywhere; expected the element end-tag or element "valid" + ""; + testDiagnosticsFor(xml, "src/test/resources/relaxng/catalog-relaxng.xml", // + d(4, 5, 12, RelaxNGErrorCode.unknown_element)); + } } diff --git a/org.eclipse.lemminx/src/test/resources/relaxng/catalog-relaxng.xml b/org.eclipse.lemminx/src/test/resources/relaxng/catalog-relaxng.xml index 15c8a11dc..1b00f372a 100644 --- a/org.eclipse.lemminx/src/test/resources/relaxng/catalog-relaxng.xml +++ b/org.eclipse.lemminx/src/test/resources/relaxng/catalog-relaxng.xml @@ -2,5 +2,7 @@ + + \ No newline at end of file diff --git a/org.eclipse.lemminx/src/test/resources/relaxng/schema.rng b/org.eclipse.lemminx/src/test/resources/relaxng/schema.rng new file mode 100644 index 000000000..3a1d6c92c --- /dev/null +++ b/org.eclipse.lemminx/src/test/resources/relaxng/schema.rng @@ -0,0 +1,15 @@ + + + + + + + + + + + +