xdoc-rs 0.1.1

Declarative XML engine for Rust
Documentation
# Feature: CLI

El CLI `xdoc` es una herramienta auxiliar para inspeccionar XML desde terminal.
Sirve durante desarrollo para probar parser, writer, query, schema y
canonicalizacion sin escribir un programa Rust para cada chequeo.

## Que aprenderas aqui

- [ ] Ejecutar el CLI desde el workspace.
- [ ] Formatear y compactar XML.
- [ ] Validar que un XML este bien formado.
- [ ] Ejecutar queries.
- [ ] Validar contratos simples.
- [ ] Canonicalizar XML para inspeccion.

## Archivo

- [ ] `crates/xdoc-cli/src/main.rs`

## Ejecutar localmente

Desde el root del repo:

```bash
cargo run -p xdoc-cli -- --help
```

El package es `xdoc-cli`, pero el binario instalado se llama `xdoc`.

## Formatear XML

```bash
cargo run -p xdoc-cli -- format tests/fixtures/xml/simple.xml
```

Usa el writer pretty del motor.

## Compactar XML

```bash
cargo run -p xdoc-cli -- compact tests/fixtures/xml/simple.xml
```

Esto es util para comparar salida deterministica.

## Validar well-formed XML

```bash
cargo run -p xdoc-cli -- validate-wellformed tests/fixtures/xml/simple.xml
```

Alias disponible:

```bash
cargo run -p xdoc-cli -- parse tests/fixtures/xml/simple.xml
```

Ambos usan el parser seguro del motor.

## Ejecutar query

```bash
cargo run -p xdoc-cli -- query \
  tests/fixtures/xml/simple.xml \
  "/Root/Item[@code='B']/text()"
```

La expresion usa el subset documentado en [query.md](query.md).

## Validar contrato simple

```bash
cargo run -p xdoc-cli -- validate \
  tests/fixtures/xml/simple.xml \
  tests/fixtures/contracts/simple-list.toml
```

El TOML de contratos del CLI es minimo y manual. Sirve para inspeccion y demos,
no para reemplazar un formato completo de contratos productivos.

## Canonicalizar

```bash
cargo run -p xdoc-cli -- canonicalize tests/fixtures/xml/simple.xml
```

Algoritmo explicito:

```bash
cargo run -p xdoc-cli -- canonicalize \
  tests/fixtures/xml/simple.xml \
  --algorithm c14n10
```

Valores actuales:

- [ ] `c14n11`
- [ ] `c14n10`

## Exit codes

- [ ] `0`: comando exitoso.
- [ ] `1`: error de runtime, XML invalido, validacion fallida u operacion no
   soportada.
- [ ] `2`: uso incorrecto del CLI.

## Cuando usar el CLI

Usalo para:

- [ ] Revisar rapidamente si un XML parsea.
- [ ] Ver como writer formatea un documento.
- [ ] Probar una query antes de llevarla a codigo.
- [ ] Revisar canonicalizacion.
- [ ] Validar contratos simples en fixtures.

No lo uses como:

- [ ] Validador XML universal.
- [ ] Administrador de certificados.
- [ ] Cliente productivo de firma.
- [ ] Herramienta de dominio.

## Errores comunes

- [ ] Olvidar `--` despues de `cargo run -p xdoc-cli`.
- [ ] Usar queries no soportadas por el subset.
- [ ] Esperar que `validate` lea XSD.
- [ ] Esperar que `canonicalize` firme el documento; solo canonicaliza.

## Siguiente lectura

- [ ] [parser.md](parser.md) para entender `parse` y `validate-wellformed`.
- [ ] [query.md](query.md) para expresiones.
- [ ] [schema.md](schema.md) para contratos.
- [ ] [signature.md](signature.md) para canonicalizacion.

[Volver al indice](features.md).