xdoc-rs 0.1.1

Declarative XML engine for Rust
Documentation
# 018j - CLI Minimum Utility

## Context

`crates/xdoc-cli/` debe aportar utilidad minima de inspeccion y desarrollo. La tarea mantiene el CLI generico y fuera de dominios.

Fuente: `plan_libreria_xml_generica_rust.md`, secciones "`xdoc-cli`" y "Definicion de exito". Hallazgo local: H-010.

Decision local: el CLI se implementa como crate separado `xdoc-cli`, con binario `xdoc`, para facilitar publicacion/instalacion independiente en crates.io. El motor XML sigue siendo `xdoc-rs`/`xdoc` y no depende del CLI.

Orden de publicacion esperado: `xdoc-macros`, luego `xdoc-rs`, luego `xdoc-cli`.

## Dependencies

[x] 005 - Writer Serializer.
[x] 007 - Parser.
[x] 009 - Query Engine.

## Instructions

[x] Implementar comando de formato pretty.
[x] Implementar comando compact.
[x] Implementar comando query basico.
[x] Implementar comando validate-wellformed.
[x] Mantener parsing de argumentos simple si no hay dependencia CLI.
[x] Agregar tests o verificacion por comandos.

## Checklist

[x] `xdoc format input.xml` produce pretty XML.
[x] `xdoc compact input.xml` produce XML compacto.
[x] `xdoc query input.xml "/Root/Item"` ejecuta query.
[x] `xdoc validate-wellformed input.xml` valida parseo.
[x] Errores de uso son claros.

## Verification

Ejecutar:

```bash
cargo run -p xdoc-cli -- validate-wellformed tests/fixtures/xml/simple.xml
cargo run -p xdoc-cli -- compact tests/fixtures/xml/simple.xml
cargo run -p xdoc-cli -- query tests/fixtures/xml/simple.xml "/Root"
cargo test
```

Criterio medible:

[x] CLI deja de ser placeholder.
[x] Comandos devuelven codigo `0` para XML valido.
[x] Comandos devuelven error para XML invalido.

## Acceptance Criteria

[x] CLI sirve para inspeccion basica del motor.
[x] CLI no introduce dominios ni dependencias innecesarias.

## Worklog

[x] 2026-06-11: se movio el CLI a `crates/xdoc-cli`, se implementaron `format`, `compact`, `query` y `validate-wellformed`, se agregaron tests unitarios y fixtures XML reutilizables. El crate depende de `xdoc-rs` por path/version y el motor no depende del CLI.
[x] 2026-06-11: `cargo package -p xdoc-cli --allow-dirty` queda bloqueado hasta publicar `xdoc-rs` en crates.io; esto confirma el orden de publicacion.