Resumo

  • draft-ietf-netmod-yang-xml-00 reúne a representação XML de nomes, namespaces, listas, valores tipados, metadados, identityref e instance-identifier.
  • Parsing, validação e canonicalização respondem perguntas de representação. A árvore efetiva, os defaults, a ordem, a aceitação do protocolo, o datastore e o efeito externo continuam sendo afirmações independentes.

Dois controladores exportam a mesma política. Um omite um leaf porque o servidor usa trim; o outro escreve explicitamente o valor que hoje coincide com o default. A ferramenta expande os dois e produz uma tela idêntica. Amanhã o modelo muda o default. Só a segunda cópia preserva a decisão original. A igualdade visual escondia histórias de autoridade diferentes.

É nesse espaço que se insere XML Encoding of Data Modeled with YANG, revisão 00, de 8 de junho de 2026. O Internet-Draft propõe retirar da RFC 7950 a definição normativa da codificação XML para configuração, estado, parâmetros de RPC/action e notificações. Ele expira em 10 de dezembro de 2026 e ainda mantém FIXME nas considerações de IANA e segurança. Não é evidência de adoção nem de conformidade de qualquer produto.

O namespace dá identidade ao nome

Cada instância de nó YANG vira um elemento XML. O nome local é o identificador do nó; o namespace vem do módulo. Elementos de topo declaram o namespace, e um filho definido por outro módulo precisa mudar para o namespace desse módulo.

Prefixes são locais. Dois prefixes diferentes podem apontar para a mesma URI e formar o mesmo nome expandido. Comparação textual cria divergência falsa; reescrita de prefix sem preservar o binding cria igualdade falsa.

Isso também vale dentro dos valores. identityref carrega uma identidade qualificada por namespace. instance-identifier exige prefix explícito em cada nome de nó, mas cada documento escolhe os seus. Resolver a string requer o schema certo. Mesmo resolvida, ela não comprova que o nó-alvo exista naquele datastore.

Nem toda ordem pertence ao XML

Filhos comuns de container podem aparecer em qualquer ordem. Entradas e saídas de RPC/action seguem a ordem do schema. Chaves de list aparecem primeiro. Entradas ordered-by user preservam a ordem do usuário; entradas system-ordered ficam a cargo da implementação.

Ordenar tudo antes de comparar reduz ruído, porém pode destruir uma política de prioridade ou first-match. Considerar toda mudança de posição relevante produz o excesso oposto. O comparador precisa do path YANG, da regra ordered-by, da sequência original e do readback.

Default ausente ainda pode comandar o comportamento

O rascunho 00 não define os modos NETCONF de defaults. A RFC 7950 estabelece quando um valor default está em uso e exige comportamento como se o nó existisse; when e if-feature podem impedir esse uso. A RFC 6243 define report-all, trim, explicit e report-all-tagged.

Logo, ausência no XML não significa ausência semântica. Presença com o valor default não revela se houve escrita explícita, expansão na resposta ou armazenamento. Antes do diff é preciso nomear a visão: bytes no fio, configuração armazenada, accessible tree com defaults ou uma resposta pedida com modo with-defaults específico.

Canonical XML não é um canonicalizador de YANG

Canonical XML 1.1 estabiliza encoding de caracteres, ordem de atributos e declarações de namespace. O W3C ressalta que regras de equivalência próprias da aplicação não cabem num algoritmo XML geral. Formas canônicas diferentes podem ser equivalentes no contexto da aplicação; formas iguais não importam automaticamente regras externas.

YANG acrescenta revision, features, deviations, formas léxicas e canônicas de tipos, defaults, ordem, constraints e resolução de referências. C14N não seleciona módulos nem avalia leafref.

A YANG Library da RFC 8525 anuncia um schema-set; ainda é necessário vinculá-lo aos bytes que o processo carregou. A RFC 8528 permite schemas montados diferentes em instâncias do mesmo mount point. Um fragmento copiado sem a instância de montagem pode mudar de significado.

Metadados da RFC 7952 viajam em atributos XML. Remover atributo desconhecido pode manter dados válidos e perder uma qualificação essencial. Conteúdo anydata sem modelo conhecido e anyxml também limitam promessas de conversão XML–JSON–XML.

Um <ok> não encerra a mudança

XML válido em disco não prova que uma RPC chegou. A RFC 6241 usa <rpc-reply>, <rpc-error> e <ok>; este último atesta processamento sem erro ou aviso e sem dados de retorno. Não atesta o efeito físico posterior.

O registro deve ligar request, message-id, sessão autenticada, capabilities, YANG Library, reply e datastore antes/depois. A RFC 8342 separa running, intended e operational porque configuração, intenção transformada e estado aplicado podem divergir. O efeito de serviço precisa de uma medição independente.

O padrão define o que as partes podem interpretar. O código em execução mostra o que aconteceu. A governança madura preserva ambos, sem fazer um falar pelo outro.

Fontes