Pular para o conteúdo
Fiscal ProBiblioteca
NF-e e NFC-e · Suplemento, assinatura e protocolo

XPath em Transform do protocolo: estrutura e limites do perfil

<XPath>nfeProc › protNFe › ds:Signature › ds:SignedInfo › ds:Reference › ds:Transforms › ds:Transform › ds:XPath

Revisão editorial em 15 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.

XPath, neste artigo, é o elemento XMLDSig localizado em /nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform/ds:XPath. Ele não é o caminho que a Biblioteca usa para identificar um campo. É um possível conteúdo estrutural de Transform.

O que o XSD permite e o que o algoritmo permite

TransformType declara uma sequência de XPath opcional e repetível: o conjunto pode estar ausente e pode conter várias ocorrências. Cada XPath tem tipo string. A indicação 1..1 do elemento, vista isoladamente, não elimina o minOccurs=0/maxOccurs=unbounded da sequência que o envolve.

Por outro lado, Algorithm de Transform é restringido por TTransformURI a enveloped-signature e C14N 1.0. A URI da transformação XPath geral não integra essa enumeração. Logo, a presença estrutural deste filho não autoriza instalar um filtro XPath arbitrário na assinatura fiscal.

Como distinguir expressão, localização e execução

O caminho editorial identifica onde procurar o elemento. O texto dentro de XPath, caso exista numa resposta, é outra informação. Sua eventual interpretação depende do algoritmo da transformação e de seu perfil. Validar que esse texto cabe em xs:string não valida a expressão como programa nem demonstra que ela foi usada na verificação.

O prefixo ds no caminho é um alias do namespace http://www.w3.org/2000/09/xmldsig#. Um integrador deve procurar pelo namespace, não exigir que o arquivo use literalmente esse prefixo. Não reserialize a resposta assinada para trocar nomes de prefixos.

Fragmento lexical e cenário de diagnóstico

O trecho sintético a seguir mostra apenas um valor string reconhecível; não configura uma transformação XPath permitida e não tem validade operacional de assinatura:

<XPath xmlns="http://www.w3.org/2000/09/xmldsig#">self::node()</XPath>

Não se deve inserir esse trecho em um protocolo. Ele demonstra que a declaração estrutural do filho não decide qual método o executa.

Se uma biblioteca exige esse filho em todos os Transform, compare sua configuração com o XSD: as etapas C14N e enveloped-signature não passam a depender de uma expressão só porque TransformType contém uma declaração XPath. Se uma resposta desconhecida contém parâmetros inesperados, preserve-a, valide contexto e perfil e examine o comportamento do verificador com segurança. Não execute expressões arbitrárias nem acrescente um filtro para fazer o digest coincidir.

Qual é o próximo passo seguro?

Registre a cadeia recebida, os Algorithms e o erro exato. Confirme com o perfil fiscal e a documentação da implementação como cada método trata seu conteúdo. Uma falha estrutural, uma expressão não suportada e um digest divergente são diagnósticos distintos. A conferência deve preservar o objeto assinado e nunca substituir a análise da assinatura, da confiança e do status oficial.

Leituras relacionadas

Fontes oficiais

Referência técnica para integração

XPath completo
/nfeProc/protNFe/ds:Signature/ds:SignedInfo/ds:Reference/ds:Transforms/ds:Transform/ds:XPath
Namespace
http://www.w3.org/2000/09/xmldsig#
Leiaute
4.00 · PL_010e_v1.02
Ocorrências no XSD
1–1 no contexto do elemento pai
Tipo
string
Preenchimento no catálogo
Condicional

A ocorrência vale dentro da estrutura XML: um campo obrigatório em um grupo opcional não torna esse grupo obrigatório. A aplicação fiscal depende da operação e da versão da regra.