A lightweight, high-performance XML Language Server Protocol (LSP) implementation written entirely in Rust.
β οΈ Project Status: Under Active Development
xml-lspis currently in an early experimental stage and is not yet suitable for production use. Core features are actively being implemented, tested, and refined.
π€ Contributions Welcome!
Contributions are welcome across XML parsing, schema validation (XSD/DTD), LSP capabilities, performance optimization, testing, and architecture. If you are interested in Rust, parsers, XML tooling, or language servers, feel free to open an issue, submit a pull request, or start a discussion.
xml-lsp aims to provide a modern, lightweight, and efficient XML development experience through the Language Server Protocol.
The project is designed from the ground up in Rust with a focus on:
The long-term goal is to provide a capable XML language server without requiring a JVM runtime or the overhead associated with larger implementations.
| Feature / Aspect | xml-lsp | Eclipse LemMinX |
|---|---|---|
| Implementation Language | Rust π¦ | Java β |
| Runtime | Native executable | JVM |
| Startup | Fast / near-instant | JVM startup overhead |
| Memory Footprint | Designed for low memory usage | Higher runtime overhead |
| Architecture | Modular Rust components | Eclipse ecosystem |
| License | MIT | EPL-2.0 |
| XML Tooling | Actively developing | Mature |
| Production Readiness | π§ Experimental | β Production-oriented |
Rust provides several properties that make it particularly suitable for a language server:
xml-lsp follows a modular architecture where XML processing, schema validation, and LSP functionality are isolated into dedicated components.
src
βββ main.rs
β βββ CLI entry point
β βββ clap integration
β βββ stdio setup
β
βββ server.rs
β βββ LSP server backend
β βββ Tower-LSP integration
β βββ request / notification handlers
β
βββ features/
β βββ mod.rs
β βββ completion.rs
β β βββ Tag & attribute completion
β β
β βββ hover.rs
β β βββ Schema & documentation information
β β
β βββ rename.rs
β β βββ XML tag renaming
β β
β βββ symbols.rs
β βββ Document symbols & outline tree
β
βββ schema/
β βββ mod.rs
β βββ dtd.rs
β β βββ DTD parser & validator
β β
β βββ xsd.rs
β βββ XSD validation engine
β
βββ xml/
βββ mod.rs
βββ parser.rs
β βββ XML document tree & diagnostics
β
βββ formatting.rs
βββ XML indentation & formatting
βββββββββββββββββββββββββββββββββββββββ
β LSP Client β
β VS Code β’ Neovim β’ Helix β’ Zed β’ ...β
ββββββββββββββββββββ¬βββββββββββββββββββ
β
β LSP / JSON-RPC
βΌ
βββββββββββββββββββββββββββββββββββββββ
β LSP Server β
β server.rs β
ββββββββββββββββββββ¬βββββββββββββββββββ
β
ββββββββββ΄βββββββββ
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β Features β β XML Engine β
β β β β
β Completion β β Parser β
β Hover β β Diagnostics β
β Rename β β Formatting β
β Symbols β β β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β
ββββββββββββ¬ββββββββββ
βΌ
βββββββββββββββββββββ
β Schema Validation β
β β
β XSD β
β DTD β
βββββββββββββββββββββ
1.99.0 or newerYou can verify your Rust installation with:
rustc --version
cargo --version
Clone the repository:
git clone https://github.com/MicroDevX/xml-lsp.git
cd xml-lsp
Build the project in release mode:
cargo build --release
The resulting executable will be available at:
target/release/xml-lsp
./target/release/xml-lsp --start
The server communicates through stdio and can therefore be integrated with LSP-compatible editors and development environments.
The project is actively evolving. Current and planned functionality is organized around the following components:
β οΈ Feature completeness and stability may change rapidly while the project is under active development.
The roadmap is intentionally iterative and may evolve as the architecture matures.
Build the project:
cargo build
Run in development mode:
cargo run -- --start
Run tests:
cargo test
Run Clippy:
cargo clippy --all-targets --all-features -- -D warnings
Format the code:
cargo fmt
Check formatting without modifying files:
cargo fmt -- --check
Contributions are welcome.
Areas where contributions can be particularly valuable include:
Example:
git checkout -b feature/my-feature
cargo fmt
cargo test
cargo clippy --all-targets --all-features -- -D warnings
git add .
git commit -m "feat: implement my feature"
git push origin feature/my-feature
Then open a Pull Request against the main repository.
xml-lsp is experimental software.
The architecture, APIs, internal modules, and feature set may change without notice while the project is being developed.
It should currently be considered a development and research project, rather than a production-ready XML language server.
This project is licensed under the MIT License.
See the LICENSE file for the complete license text.
If you find xml-lsp useful or are interested in its development, consider starring the repository and contributing to its evolution.
Repository: https://github.com/MicroDevX/xml-lsp
π¦ Built with Rust. β‘ Designed for speed. π§© Built for modern development environments.
A lightweight, high-performance XML Language Server Protocol (LSP) implementation written entirely in Rust.
β οΈ Project Status: Under Active Development
xml-lspis currently in an early experimental stage and is not yet suitable for production use. Core features are actively being implemented, tested, and refined.
π€ Contributions Welcome!
Contributions are welcome across XML parsing, schema validation (XSD/DTD), LSP capabilities, performance optimization, testing, and architecture. If you are interested in Rust, parsers, XML tooling, or language servers, feel free to open an issue, submit a pull request, or start a discussion.
xml-lsp aims to provide a modern, lightweight, and efficient XML development experience through the Language Server Protocol.
The project is designed from the ground up in Rust with a focus on:
The long-term goal is to provide a capable XML language server without requiring a JVM runtime or the overhead associated with larger implementations.
| Feature / Aspect | xml-lsp | Eclipse LemMinX |
|---|---|---|
| Implementation Language | Rust π¦ | Java β |
| Runtime | Native executable | JVM |
| Startup | Fast / near-instant | JVM startup overhead |
| Memory Footprint | Designed for low memory usage | Higher runtime overhead |
| Architecture | Modular Rust components | Eclipse ecosystem |
| License | MIT | EPL-2.0 |
| XML Tooling | Actively developing | Mature |
| Production Readiness | π§ Experimental | β Production-oriented |
Rust provides several properties that make it particularly suitable for a language server:
xml-lsp follows a modular architecture where XML processing, schema validation, and LSP functionality are isolated into dedicated components.
src
βββ main.rs
β βββ CLI entry point
β βββ clap integration
β βββ stdio setup
β
βββ server.rs
β βββ LSP server backend
β βββ Tower-LSP integration
β βββ request / notification handlers
β
βββ features/
β βββ mod.rs
β βββ completion.rs
β β βββ Tag & attribute completion
β β
β βββ hover.rs
β β βββ Schema & documentation information
β β
β βββ rename.rs
β β βββ XML tag renaming
β β
β βββ symbols.rs
β βββ Document symbols & outline tree
β
βββ schema/
β βββ mod.rs
β βββ dtd.rs
β β βββ DTD parser & validator
β β
β βββ xsd.rs
β βββ XSD validation engine
β
βββ xml/
βββ mod.rs
βββ parser.rs
β βββ XML document tree & diagnostics
β
βββ formatting.rs
βββ XML indentation & formatting
βββββββββββββββββββββββββββββββββββββββ
β LSP Client β
β VS Code β’ Neovim β’ Helix β’ Zed β’ ...β
ββββββββββββββββββββ¬βββββββββββββββββββ
β
β LSP / JSON-RPC
βΌ
βββββββββββββββββββββββββββββββββββββββ
β LSP Server β
β server.rs β
ββββββββββββββββββββ¬βββββββββββββββββββ
β
ββββββββββ΄βββββββββ
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β Features β β XML Engine β
β β β β
β Completion β β Parser β
β Hover β β Diagnostics β
β Rename β β Formatting β
β Symbols β β β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β
ββββββββββββ¬ββββββββββ
βΌ
βββββββββββββββββββββ
β Schema Validation β
β β
β XSD β
β DTD β
βββββββββββββββββββββ
1.99.0 or newerYou can verify your Rust installation with:
rustc --version
cargo --version
Clone the repository:
git clone https://github.com/MicroDevX/xml-lsp.git
cd xml-lsp
Build the project in release mode:
cargo build --release
The resulting executable will be available at:
target/release/xml-lsp
./target/release/xml-lsp --start
The server communicates through stdio and can therefore be integrated with LSP-compatible editors and development environments.
The project is actively evolving. Current and planned functionality is organized around the following components:
β οΈ Feature completeness and stability may change rapidly while the project is under active development.
The roadmap is intentionally iterative and may evolve as the architecture matures.
Build the project:
cargo build
Run in development mode:
cargo run -- --start
Run tests:
cargo test
Run Clippy:
cargo clippy --all-targets --all-features -- -D warnings
Format the code:
cargo fmt
Check formatting without modifying files:
cargo fmt -- --check
Contributions are welcome.
Areas where contributions can be particularly valuable include:
Example:
git checkout -b feature/my-feature
cargo fmt
cargo test
cargo clippy --all-targets --all-features -- -D warnings
git add .
git commit -m "feat: implement my feature"
git push origin feature/my-feature
Then open a Pull Request against the main repository.
xml-lsp is experimental software.
The architecture, APIs, internal modules, and feature set may change without notice while the project is being developed.
It should currently be considered a development and research project, rather than a production-ready XML language server.
This project is licensed under the MIT License.
See the LICENSE file for the complete license text.
If you find xml-lsp useful or are interested in its development, consider starring the repository and contributing to its evolution.
Repository: https://github.com/MicroDevX/xml-lsp
π¦ Built with Rust. β‘ Designed for speed. π§© Built for modern development environments.