I am trying to understand why the XML catalog resolution behaves differently between VS Code (LemMinX 0.31.2 it seems) and Wild Web Developer (LemMinX 0.31.0 it seems), using the same catalog.xml and the same XML file.
It is a multi module Maven project. The catalog is at .vscode/catalog.xml:
cvc-type.3.1.2: Element 'dataset' is a simple type, so it must have no element information item [children].
cvc-type.3.1.1: Element 'dataset' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'x' was found.
This is correct and matches the schema.
No error at all, and the "Bind to grammar/schema ..." action is proposed, meaning no grammar was found for the document. The catalog entry is simply not used to resolve the XSD.
I get the same errors as VS Code, so the XSD itself is fine and reachable. The problem is specific to the catalog based resolution in Eclipse. I would rather not have to reference the XSD directly in every file, that defeats the purpose of the catalog.
I enabled the LSP logs and the catalog is indeed known to the server at initialize time:
{
"jsonrpc": "2.0",
"id": "1",
"method": "initialize",
"params": {
"processId": 30448,
"rootPath": "/C:/repos/lemminx-catalog/xmlfiles/",
"rootUri": "file:///C:/repos/lemminx-catalog/xmlfiles/",
"initializationOptions": {
"settings": {
"xml": {
"maven": {},
"downloadExternalResources": {
"enabled": true
},
"catalogs": [
"C:\\eclipse-lemminx-catalog\\ws\\.metadata\\.plugins\\org.eclipse.wildwebdeveloper.xml\\system-catalog.xml",
"C:\\repos\\lemminx-catalog\\.vscode\\catalog.xml"
],
"format": {
"xsiSchemaLocationSplit": "onPair",
"maxLineWidth": 150,
"preserveAttributeLineBreaks": true,
"closingBracketNewLine": false,
"grammarAwareFormatting": false,
"joinContentLines": false,
"splitAttributes": "preserve",
"joinCDATALines": false,
"preserveSpace": [
"xsl:text",
"xsl:comment",
"xsl:processing-instruction",
"literallayout",
"programlisting",
"screen",
"synopsis",
"pre",
"xd:pre"
],
"trimFinalNewlines": false,
"emptyElements": "ignore",
"spaceBeforeEmptyCloseTag": true,
"splitAttributesIndentSize": 2,
"preservedNewlines": 2,
"enforceQuoteStyle": "ignore",
"joinCommentLines": false,
"insertFinalNewline": false,
"trimTrailingWhitespace": false
},
"codeLens": {
"enabled": true
},
"foldings": {
"includeClosingTagInFold": true
},
"validation": {
"schema": {
"enabled": "always"
},
"noGrammar": "hint",
"resolveExternalEntities": false,
"enabled": true,
"namespaces": {
"enabled": "onNamespaceEncountered"
},
"disallowDocTypeDecl": false
}
}
},
"extendedClientCapabilities": {
"bindingWizardSupport": true,
"codeLens": {
"codeLensKind": {
"valueSet": [
"association"
]
}
}
}
},
"capabilities": {
"workspace": {
"applyEdit": true,
"workspaceEdit": {
"documentChanges": true,
"resourceOperations": [
"create",
"delete",
"rename"
],
"failureHandling": "undo",
"changeAnnotationSupport": {
"groupsOnLabel": true
}
},
"didChangeWatchedFiles": {
"relativePatternSupport": true,
"dynamicRegistration": true
},
"symbol": {
"tagSupport": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ] },
"dynamicRegistration": true
},
"executeCommand": {
"dynamicRegistration": true
},
"workspaceFolders": true,
"configuration": true,
"codeLens": {
"refreshSupport": true
},
"fileOperations": {
"willCreate": true,
"willRename": true,
"willDelete": true
}
},
"textDocument": {
"synchronization": {
"willSave": true,
"willSaveWaitUntil": true,
"didSave": true
},
"completion": {
"completionItem": {
"snippetSupport": true,
"documentationFormat": [ "markdown", "plaintext" ],
"resolveSupport": { "properties": [ "documentation", "detail", "additionalTextEdits" ] },
"insertTextModeSupport": { "valueSet": [ 1, 2 ] }
},
"contextSupport": true,
"insertTextMode": 2,
"completionList": { "itemDefaults": [ "commitCharacters", "editRange", "insertTextFormat", "insertTextMode" ] },
"dynamicRegistration": true
},
"hover": {
"contentFormat": [
"markdown",
"plaintext"
]
},
"signatureHelp": {},
"references": {},
"documentHighlight": {},
"documentSymbol": {
"symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] },
"hierarchicalDocumentSymbolSupport": true,
"tagSupport": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ] }
},
"formatting": {
"dynamicRegistration": true
},
"rangeFormatting": {},
"onTypeFormatting": {
"dynamicRegistration": true
},
"definition": {
"linkSupport": true
},
"typeDefinition": {
"linkSupport": true
},
"codeAction": {
"codeActionLiteralSupport": {
"codeActionKind": { "valueSet": [ "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] }
},
"dataSupport": true,
"resolveSupport": {
"properties": [
"edit"
]
},
"dynamicRegistration": true
},
"codeLens": {},
"documentLink": {},
"colorProvider": {},
"rename": {
"prepareSupport": true
},
"publishDiagnostics": {},
"foldingRange": {
"lineFoldingOnly": true,
"foldingRangeKind": {
"valueSet": [
"comment",
"imports",
"region"
]
},
"foldingRange": {
"collapsedText": false
}
},
"callHierarchy": {},
"selectionRange": {},
"inlayHint": {}
},
"window": {
"workDoneProgress": true,
"showMessage": {},
"showDocument": {
"support": true
}
}
},
"clientInfo": {
"name": "Eclipse IDE",
"version": "0.19.13.202605190944"
},
"trace": "off",
"workspaceFolders": [
{
"uri": "file:///C:/eclipse-lemminx-catalog/ws/languageServers-log/",
"name": "languageServers-log"
},
{
"uri": "file:///C:/repos/lemminx-catalog/",
"name": "parent"
},
{
"uri": "file:///C:/repos/lemminx-catalog/schemas/",
"name": "schemas"
},
{
"uri": "file:///C:/repos/lemminx-catalog/xmlfiles/",
"name": "xmlfiles"
}
]
}
}
So both the catalog path and its content are received by the server, but nothing indicates that the catalog is actually used or rejected when I open dataset.xml. No error, no warning, just the "no grammar" hint.
Eclipse 2026-06, Java 21, installed through Oomph.
I am trying to understand why the XML catalog resolution behaves differently between VS Code (LemMinX 0.31.2 it seems) and Wild Web Developer (LemMinX 0.31.0 it seems), using the same catalog.xml and the same XML file.
Reproducer project: issue.tar.gz
It is a multi module Maven project. The catalog is at
.vscode/catalog.xml:The schema declares
datasetas anxs:stringelement:And the XML file to validate is:
Steps to reproduce:
xml.catalogs.dataset.xml.dataset.xml.Expected result:
The catalog resolves the namespace
http://www.acme.org/ns/datasetto the XSD and validation reports thatdatasetcannot have children or attributes, since it is declared asxs:string.Actual result in VS Code:
This is correct and matches the schema.
Actual result in Eclipse with Wild Web Developer:
No error at all, and the "Bind to grammar/schema ..." action is proposed, meaning no grammar was found for the document. The catalog entry is simply not used to resolve the XSD.
If I add an explicit
xsi:schemaLocationpointing to the same XSD:I get the same errors as VS Code, so the XSD itself is fine and reachable. The problem is specific to the catalog based resolution in Eclipse. I would rather not have to reference the XSD directly in every file, that defeats the purpose of the catalog.
I enabled the LSP logs and the catalog is indeed known to the server at initialize time:
{ "jsonrpc": "2.0", "id": "1", "method": "initialize", "params": { "processId": 30448, "rootPath": "/C:/repos/lemminx-catalog/xmlfiles/", "rootUri": "file:///C:/repos/lemminx-catalog/xmlfiles/", "initializationOptions": { "settings": { "xml": { "maven": {}, "downloadExternalResources": { "enabled": true }, "catalogs": [ "C:\\eclipse-lemminx-catalog\\ws\\.metadata\\.plugins\\org.eclipse.wildwebdeveloper.xml\\system-catalog.xml", "C:\\repos\\lemminx-catalog\\.vscode\\catalog.xml" ], "format": { "xsiSchemaLocationSplit": "onPair", "maxLineWidth": 150, "preserveAttributeLineBreaks": true, "closingBracketNewLine": false, "grammarAwareFormatting": false, "joinContentLines": false, "splitAttributes": "preserve", "joinCDATALines": false, "preserveSpace": [ "xsl:text", "xsl:comment", "xsl:processing-instruction", "literallayout", "programlisting", "screen", "synopsis", "pre", "xd:pre" ], "trimFinalNewlines": false, "emptyElements": "ignore", "spaceBeforeEmptyCloseTag": true, "splitAttributesIndentSize": 2, "preservedNewlines": 2, "enforceQuoteStyle": "ignore", "joinCommentLines": false, "insertFinalNewline": false, "trimTrailingWhitespace": false }, "codeLens": { "enabled": true }, "foldings": { "includeClosingTagInFold": true }, "validation": { "schema": { "enabled": "always" }, "noGrammar": "hint", "resolveExternalEntities": false, "enabled": true, "namespaces": { "enabled": "onNamespaceEncountered" }, "disallowDocTypeDecl": false } } }, "extendedClientCapabilities": { "bindingWizardSupport": true, "codeLens": { "codeLensKind": { "valueSet": [ "association" ] } } } }, "capabilities": { "workspace": { "applyEdit": true, "workspaceEdit": { "documentChanges": true, "resourceOperations": [ "create", "delete", "rename" ], "failureHandling": "undo", "changeAnnotationSupport": { "groupsOnLabel": true } }, "didChangeWatchedFiles": { "relativePatternSupport": true, "dynamicRegistration": true }, "symbol": { "tagSupport": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ] }, "dynamicRegistration": true }, "executeCommand": { "dynamicRegistration": true }, "workspaceFolders": true, "configuration": true, "codeLens": { "refreshSupport": true }, "fileOperations": { "willCreate": true, "willRename": true, "willDelete": true } }, "textDocument": { "synchronization": { "willSave": true, "willSaveWaitUntil": true, "didSave": true }, "completion": { "completionItem": { "snippetSupport": true, "documentationFormat": [ "markdown", "plaintext" ], "resolveSupport": { "properties": [ "documentation", "detail", "additionalTextEdits" ] }, "insertTextModeSupport": { "valueSet": [ 1, 2 ] } }, "contextSupport": true, "insertTextMode": 2, "completionList": { "itemDefaults": [ "commitCharacters", "editRange", "insertTextFormat", "insertTextMode" ] }, "dynamicRegistration": true }, "hover": { "contentFormat": [ "markdown", "plaintext" ] }, "signatureHelp": {}, "references": {}, "documentHighlight": {}, "documentSymbol": { "symbolKind": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ] }, "hierarchicalDocumentSymbolSupport": true, "tagSupport": { "valueSet": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ] } }, "formatting": { "dynamicRegistration": true }, "rangeFormatting": {}, "onTypeFormatting": { "dynamicRegistration": true }, "definition": { "linkSupport": true }, "typeDefinition": { "linkSupport": true }, "codeAction": { "codeActionLiteralSupport": { "codeActionKind": { "valueSet": [ "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" ] } }, "dataSupport": true, "resolveSupport": { "properties": [ "edit" ] }, "dynamicRegistration": true }, "codeLens": {}, "documentLink": {}, "colorProvider": {}, "rename": { "prepareSupport": true }, "publishDiagnostics": {}, "foldingRange": { "lineFoldingOnly": true, "foldingRangeKind": { "valueSet": [ "comment", "imports", "region" ] }, "foldingRange": { "collapsedText": false } }, "callHierarchy": {}, "selectionRange": {}, "inlayHint": {} }, "window": { "workDoneProgress": true, "showMessage": {}, "showDocument": { "support": true } } }, "clientInfo": { "name": "Eclipse IDE", "version": "0.19.13.202605190944" }, "trace": "off", "workspaceFolders": [ { "uri": "file:///C:/eclipse-lemminx-catalog/ws/languageServers-log/", "name": "languageServers-log" }, { "uri": "file:///C:/repos/lemminx-catalog/", "name": "parent" }, { "uri": "file:///C:/repos/lemminx-catalog/schemas/", "name": "schemas" }, { "uri": "file:///C:/repos/lemminx-catalog/xmlfiles/", "name": "xmlfiles" } ] } }So both the catalog path and its content are received by the server, but nothing indicates that the catalog is actually used or rejected when I open
dataset.xml. No error, no warning, just the "no grammar" hint.Environment:
Eclipse 2026-06, Java 21, installed through Oomph.