xdoc-rs 0.1.1

Declarative XML engine for Rust
Documentation
# 018b - Parser Document Boundaries

## Context

El parser debe aceptar whitespace-only fuera del root y rechazar documentos sin elemento raiz. Esto mejora compatibilidad XML real antes de firma y validacion estricta.

Fuente: `plan_libreria_xml_generica_rust.md`, secciones "xdoc-parser" y "Seguridad por defecto". Hallazgos locales: H-002 y H-004.

## Dependencies

[x] 007 - Parser.

## Instructions

[x] Revisar manejo de eventos de texto fuera del root.
[x] Permitir whitespace-only antes y despues del root.
[x] Rechazar texto no-whitespace fuera del root.
[x] Rechazar documentos vacios o sin root.
[x] Revisar comentarios y processing instructions fuera del root.
[x] Agregar tests de XML con declaracion, whitespace y documento vacio.

## Checklist

[x] `parse_str("  <Root/>  ")` pasa.
[x] `parse_str("\n<Root/>\n")` pasa.
[x] Texto no-whitespace fuera del root falla.
[x] `parse_str("")` falla con error claro.
[x] Documento con solo comentario falla como documento sin root.
[x] Mensajes de error usan `ErrorKind::Parse`.

## Verification

Ejecutar:

```bash
cargo test parser
cargo test whitespace
cargo test empty
cargo fmt --all -- --check
cargo check
```

Criterio medible:

[x] Tests cubren whitespace antes/despues del root.
[x] Tests cubren documento vacio.
[x] Tests cubren texto ilegal fuera del root.

## Acceptance Criteria

[x] Parser acepta XML valido comun de herramientas externas.
[x] Parser no confunde documento XML completo con fragmento vacio.
[x] No se implementa parser streaming en esta tarea.

## Worklog

[x] Completado el 2026-06-11. Parser permite whitespace/comments/processing instructions fuera del root sin agregarlos al arbol, rechaza texto/CDATA fuera del root y falla explicitamente si no hay elemento raiz.