# @codemirror/lang-xml [![NPM version](https://img.shields.io/npm/v/@codemirror/lang-xml.svg)](https://www.npmjs.org/package/@codemirror/lang-xml) [ [**WEBSITE**](https://codemirror.net/) | [**ISSUES**](https://github.com/codemirror/dev/issues) | [**FORUM**](https://discuss.codemirror.net/c/next/) | [**CHANGELOG**](https://github.com/codemirror/lang-xml/blob/main/CHANGELOG.md) ] This package implements XML language support for the [CodeMirror](https://codemirror.net/) code editor. The [project page](https://codemirror.net/) has more information, a number of [examples](https://codemirror.net/examples/) and the [documentation](https://codemirror.net/docs/). This code is released under an [MIT license](https://github.com/codemirror/lang-xml/tree/main/LICENSE). We aim to be an inclusive, welcoming community. To make that explicit, we have a [code of conduct](http://contributor-covenant.org/version/1/1/0/) that applies to communication around the project. ## API Reference
xml(conf⁠?: Object = {}) → LanguageSupport

XML language support. Includes schema-based autocompletion when configured.

conf
elements⁠?: readonly ElementSpec[]

Provide a schema to create completions from.

attributes⁠?: readonly AttrSpec[]

Supporting attribute descriptions for the schema specified in elements.

autoCloseTags⁠?: boolean

Determines whether autoCloseTags is included in the support extensions. Defaults to true.

xmlLanguage: LRLanguage

A language provider based on the Lezer XML parser, extended with highlighting and indentation information.

interface ElementSpec

Describes an element in your XML document schema.

name: string

The element name.

children⁠?: readonly string[]

Allowed children in this element. When not given, all elements are allowed inside it.

textContent⁠?: readonly string[]

When given, allows users to complete the given content strings as plain text when at the start of the element.

top⁠?: boolean

Whether this element may appear at the top of the document.

attributes⁠?: readonly (string | AttrSpec)[]

Allowed attributes in this element. Strings refer to attributes specified in XMLConfig.attrs, but you can also provide one-off attribute specs. Attributes marked as global are allowed in every element, and don't have to be mentioned here.

completion⁠?: Partial<Completion>

Can be provided to add extra fields to the completion object created for this element.

interface AttrSpec

Describes an attribute in your XML schema.

name: string

The attribute name.

values⁠?: readonly (string | Completion)[]

Pre-defined values to complete for this attribute.

global⁠?: boolean

When true, this attribute can be added to all elements.

completion⁠?: Partial<Completion>

Provides extra fields to the completion object created for this element

completeFromSchema(eltSpecs: readonly ElementSpec[], attrSpecs: readonly AttrSpec[]) → CompletionSource

Create a completion source for the given schema.

autoCloseTags: Extension

Extension that will automatically insert close tags when a > or / is typed.