Nfse.Schema.Field (nfse v0.1.0)

Copy Markdown View Source

Um elemento ou atributo de um tipo complexo do XSD, como o descritor de cada módulo de schema o declara em __schema__(:fields) e __schema__(:attributes).

CampoSignificado
namea chave no struct, o nome do XSD em snake_case
xmlo nome do elemento ou do atributo no XML
type{:simple, nome_do_tipo}, {:complex, módulo} ou :signature
min0 quando o campo é opcional, 1 quando é obrigatório
maxquantas vezes o elemento pode aparecer; acima de 1, o campo guarda uma lista
choiceo índice do choice de que o campo faz parte, ou nil

Num choice, o min do ramo não torna o campo obrigatório sozinho. O choice exige um ramo quando o min dele, em __schema__(:choices), é 1 e cada ramo tem min 1; se algum ramo tem min 0, ele pode ser escolhido vazio, e nenhum ramo preenchido é válido. Dois ramos preenchidos são sempre erro.

Summary

Types

t()

@type t() :: %Nfse.Schema.Field{
  choice: non_neg_integer() | nil,
  max: pos_integer() | :unbounded,
  min: 0 | 1,
  name: atom(),
  type: type(),
  xml: String.t()
}

type()

@type type() :: {:simple, String.t()} | {:complex, module()} | :signature