XML catalog is loaded by LemMinX but not used to resolve the XSD in Wild Web Developer (works in VS Code with the same catalog.xml)
还没有人认领这个 Issue。
评估
调研方向
解压 issue.tar.gz 并检查 .vscode/catalog.xml、dataset.xml 和 schemas/src/main/resources/schemas/schema.xsd;首先在 Wild Web Developer 中重现 catalog 解析差异,并查看报告中显示的 initialize settings。完成的标准是:在 Eclipse 中,catalog 将 dataset namespace 映射到 XSD,并且验证报告与 VS Code 相同的子元素和属性错误。
由索引模型根据 Issue 内容生成。
描述
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:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.1//EN" "http://www.oasis-open.org/committees/entity/release/1.1/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<uri name="http://www.acme.org/ns/dataset" uri="../schemas/src/main/resources/schemas/schema.xsd" />
</catalog>
The schema declares dataset as an xs:string element:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.acme.org/ns/dataset"
targetNamespace="http://www.acme.org/ns/dataset"
elementFormDefault="qualified">
<xs:element name="dataset" type="xs:string" />
</xs:schema>
And the XML file to validate is:
<?xml version="1.0" encoding="UTF-8"?>
<dataset xmlns="http://www.acme.org/ns/dataset" x="a">
<A />
</dataset>
Steps to reproduce:
- Open the project in VS Code with the redhat.vscode-xml extension, catalog registered through
xml.catalogs. - Open
dataset.xml. - Open the same project in Eclipse, with Wild Web Developer, catalog registered in Window > Preferences > XML (Wild Web Developer) > Catalogs.
- Open
dataset.xml.
Expected result:
The catalog resolves the namespace http://www.acme.org/ns/dataset to the XSD and validation reports that dataset cannot have children or attributes, since it is declared as xs:string.
Actual result in VS Code:
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.
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:schemaLocation pointing to the same XSD:
<?xml version="1.0" encoding="UTF-8"?>
<dataset xmlns="http://www.acme.org/ns/dataset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.acme.org/ns/dataset ../../../../schemas/src/main/resources/schemas/schema.xsd" x="a">
<A />
</dataset>
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.
| Feature | Version | Id | Provider |
|---|---|---|---|
| Wild Web Developer HTML, CSS, JSON, Yaml, JavaScript, TypeScript, Node tools | 1.4.0.202511281851 | org.eclipse.wildwebdeveloper.feature.feature.group | Eclipse Wild Web Developer project |
| Wild Web Developer XML tools | 1.3.8.202511131403 | org.eclipse.wildwebdeveloper.xml.feature.feature.group | Eclipse Wild Web Developer project |
- 主要语言
- Java
- 星标
- 201
- 派生
- 76
- 平均合并
- 4 天 7 小时
- 30 天内合并 PR
- 21
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
eclipse-wildwebdeveloper/wildwebdeveloper 的其他 Issue
-
enhancement
难度 5/5 一周以上 新手友好度 25/100
eclipse-wildwebdeveloper/wildwebdeveloper#2122 · 2 条评论 ·
-
enhancement
难度 4/5 3-5 天 新手友好度 35/100
eclipse-wildwebdeveloper/wildwebdeveloper#2070 · 1 条评论 ·
-
ESLintLanguageServer and JSTSLanguageServer do not support node memory limits (--max-old-space-size) 未关闭
难度 3/5 1-2 天 新手友好度 48/100
eclipse-wildwebdeveloper/wildwebdeveloper#2027 · 2 条评论 ·
-
Renaming a variable leads to entire contents of the file editor being replaced with one word- Error 未关闭
难度 4/5 3-5 天 新手友好度 42/100
eclipse-wildwebdeveloper/wildwebdeveloper#1974 · 5 条评论 ·
-
contributions welcome enhancement
难度 4/5 3-5 天 新手友好度 48/100
eclipse-wildwebdeveloper/wildwebdeveloper#1969 · 4 条评论 · 2 个 reaction ·
查看 eclipse-wildwebdeveloper/wildwebdeveloper 的全部 Issue
相似的 Issue
-
Bug Java Platform: Java
难度 2/5 1-3 小时 新手友好度 78/100
getsentry/sentry-java#6138 · 1 条评论 ·
-
bug needs triage p2
难度 2/5 1-3 小时 新手友好度 78/100
GoogleCloudPlatform/DataflowTemplates#4273 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 78/100
-
难度 2/5 1-3 小时 新手友好度 76/100
-
bug needs triage
难度 2/5 1-3 小时 新手友好度 76/100