# `Nfse.Schema`
[🔗](https://github.com/ideia4it/nfse/blob/v0.1.0/lib/nfse/schema.ex#L1)

Os leiautes da NFS-e Nacional que a biblioteca conhece.

Cada versão tem um módulo por tipo complexo do XSD, gerado pela tarefa `nfse.gen` do repositório, como
`Nfse.Schema.V1_01.TCInfDPS`. A 1.01 é a versão escrita; a 1.00 só é lida, para os documentos
emitidos antes dela.

Os campos têm o nome do XSD em snake_case, com as siglas NFSe, DFSe, NFe e DFe contadas como
uma palavra: `cLocEmi` vira `c_loc_emi` e `infNFSe` vira `inf_nfse`.

# `root`

```elixir
@type root() :: :dps | :nfse | :pedido_evento | :evento
```

# `root`

```elixir
@spec root(String.t(), root()) :: {:ok, module()} | {:error, Nfse.Error.t()}
```

Devolve o módulo do documento raiz `root` na versão do leiaute `version`, como o atributo
`versao` do XML a traz.

    iex> Nfse.Schema.root("1.01", :nfse)
    {:ok, Nfse.Schema.V1_01.TCNFSe}

---

*Consult [api-reference.md](api-reference.md) for complete listing*
