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)

オープン
#2,177 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
java
領域
devtools

調査の方向性

issue.tar.gz を展開し、.vscode/catalog.xml、dataset.xml、schemas/src/main/resources/schemas/schema.xsd を調べます。まず、Wild Web Developer でのカタログ解決の違いを再現し、レポートに示されている initialize settings を確認します。Eclipse でカタログが 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:

  1. Open the project in VS Code with the redhat.vscode-xml extension, catalog registered through xml.catalogs.
  2. Open dataset.xml.
  3. Open the same project in Eclipse, with Wild Web Developer, catalog registered in Window > Preferences > XML (Wild Web Developer) > Catalogs.
  4. 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時間
マージ済み PR(30日)
21

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

eclipse-wildwebdeveloper/wildwebdeveloper のほかの issue

eclipse-wildwebdeveloper/wildwebdeveloper の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。