XML Language Support by Red Hat
This VS Code extension provides support for creating and editing XML documents, based on the LemMinX XML Language Server, running with Java.
- Syntax error reporting
- General code completion
- Auto-close tags
- Automatic node indentation
- Symbol highlighting
- Document folding
- Document links
- Document symbols and outline
- Renaming support
- Document Formatting
- DTD validation
- DTD completion
- DTD formatting
- XSD validation
- XSD based hover
- XSD based code completion
- XSL support
- XML catalogs
- File associations
- Code actions
- Schema Caching
See the changelog for the latest release. You might also find useful information in the project Wiki.
- Java JDK (or JRE) 8 or more recent
- Ensure Java path is set in either:
xml.java.home in VSCode preferences
java.home in VSCode preferences
- Environment variable
- Note: The path should end at the parent folder that contains the
bin exists at
- Note: If the path is not set, the extension will attempt to find the path to the JDK or JRE.
Supported VS Code settings
The following settings are supported:
xml.trace.server : Trace the communication between VS Code and the XML Language Server in the Output view.
xml.catalogs : Register XML catalog files.
xml.logs.client : Enable/disable logging to the Output view.
xml.fileAssociations : Associate XML Schemas to XML file patterns.
xml.format.splitAttributes : Set to
true to split node attributes onto multiple lines during formatting. Defaults to
xml.format.joinCDATALines : Set to
true to join lines in CDATA content during formatting. Defaults to
xml.format.joinContentLines : Set to
true to join lines in node content during formatting. Defaults to
xml.format.joinCommentLines : Set to
true to join lines in comments during formatting. Defaults to
xml.format.preservedNewLines: Set the maximum amount of newlines between elements. Defaults to
xml.format.preserveEmptyContent: Set to
true to preserve standalone whitespace content in an element. Defaults to
xml.format.spaceBeforeEmptyCloseTag: Set to
true to insert space before the end of a self closing tag. Defaults to
xml.format.quotations: Set to
doubleQuotes to format and only use
singleQuotes to format and only use
'. Defaults to
xml.format.enabled : Enable/disable formatting.
xml.autoCloseTags.enabled : Enable/disable automatic tag closing.
Note 'editor.autoClosingBrackets' must be turned off to work.
xml.java.home: Set the Java path required to run the XML Language Server. If not set, falls back to either the
java.home preference or the
JDK_HOME environment variables.
xml.server.vmargs: Extra VM arguments used to launch the XML Language Server. Requires VS Code restart.
xml.symbols.enabled: Enable/disable document symbols (Outline). Default is
xml.validation.enabled: Set to
false to disable all validation. Defaults to
xml.validation.schema: Set to
false to disable schema validation. Defaults to
xml.validation.noGrammar: The message severity when a document has no associated grammar. Defaults to
xml.validation.disallowDocTypeDecl: Enable/disable if a fatal error is thrown if the incoming document contains a DOCTYPE declaration. Default is
xml.validation.resolveExternalEntities: Enable/disable resolve of external entities. Default is
xml.server.workDir: Set an absolute path for all cached schemas to be stored. Defaults to
xml.codeLens.enabled: Enable/disable XML CodeLens. Default is
xml.symbols.excluded: Disable document symbols (Outline) for the given file name patterns. Updating file name patterns does not automatically reload the Outline view for the relevant file(s). Each file must either be reopened or changed, in order to trigger an Outline view reload.
Custom XML Extensions
The LemMinX - XML Language Server can be extended to support custom completion, hover, validation, rename, etc by using the Java Service Provider Interface (SPI) mechanism. vscode-xml provides the ability use your custom XML support provider, by adding external jars to the XML language server's classpath.
To do that:
create a Java project which provides a custom XML extension providing your custom completion, hover, validation, rename, etc:
vscode extension which embeds the
your-custom-xml-extension.jar JAR and declares this JAR path in the
You can see the vscode-xml-maven sample which registers custom maven completion MavenCompletionParticipant for scope:
This is an open source project open to anyone. Contributions are extremely welcome!
For information on getting started, refer to the CONTRIBUTING instructions.
CI builds can be installed manually by following these instructions:
Download the latest development VSIX archive from here.
Go to the Extensions section in VSCode.
At the top right click the
Select 'Install from VSIX...' and choose the visx file.
EPL 1.0, See LICENSE file.