xdoc-rs 0.1.1

Declarative XML engine for Rust
Documentation
# 006 - Builder API

## Context

`src/builder/` permite crear XML sin manipular `NodeId` directamente. La macro `xml!` debe apoyarse en este builder.

El builder tambien debe ser la base de una experiencia tipo Leptos: componentes Rust, props tipadas, children y composicion declarativa.

Fuente: `plan_libreria_xml_generica_rust.md`, secciones "`xdoc-builder`", "Composicion antes que macro-magia" y "Fase 3 - Builder API". Adaptacion local: implementar en `src/builder/`.

## Dependencies

[x] 004 - Core Document Tree.
[x] 005 - Writer Serializer para pruebas de salida.

## Instructions

[x] Crear `src/builder/`.
[x] Implementar builder de documentos.
[x] Implementar builder de elementos.
[x] Implementar builder de fragmentos.
[x] Agregar helpers para texto.
[x] Agregar helpers para atributos.
[x] Agregar helpers para namespaces.
[x] Permitir composicion con funciones Rust.
[x] Permitir agregar colecciones con iteradores.
[x] Exponer primitivas que permitan implementar componentes encima.
[x] Definir conversiones hacia fragmentos XML.
[x] Retornar errores claros.

## Checklist

[x] `DocumentBuilder` existe.
[x] `ElementBuilder` existe.
[x] `FragmentBuilder` existe.
[x] Se puede crear documento con root.
[x] Se puede agregar hijo anidado.
[x] Se puede agregar texto.
[x] Se puede agregar atributo estatico.
[x] Se puede agregar atributo dinamico.
[x] Se puede declarar namespace default.
[x] Se puede declarar namespace con prefijo.
[x] Se puede construir desde `Vec` o iterador.
[x] Se puede condicionar un nodo desde Rust normal.
[x] Existe una forma clara de convertir valores a nodo o fragmento.
[x] Existe una forma clara de pasar children a una funcion componente.
[x] Errores invalidos devuelven `XmlError`.

## Verification

Ejecutar:

```bash
cargo test builder
cargo test document_builder
cargo test fragment_builder
cargo test namespaces
cargo test collections
```

Criterio medible:

[x] Test crea XML de 3 niveles usando builder.
[x] Test crea XML con namespace default y prefijo.
[x] Test crea lista de nodos desde iterador.
[x] Test crea XML usando una funcion Rust como componente simple.
[x] Test pasa children a una funcion componente simple.
[x] Test valida error por nombre invalido.
[x] Test serializa resultado con `src/writer/`.

## Acceptance Criteria

[x] Usuario puede crear XML complejo sin tocar `NodeId`.
[x] Builder no duplica reglas internas del core innecesariamente.
[x] Builder queda listo para ser backend de `xml!`.
[x] Builder queda listo para soportar componentes tipo Leptos.

## Worklog

[x] Completado el 2026-06-10. Verificado con los comandos de la tarea y la verificacion minima global.