- 14.3. Validação de Schema XML
14.3.2. Validar Schema XML - 14.3.1. O que é um Schema XML?
« Anterior - 14.3.3. Como sanear um XML com falha de Schema XML?
Próximo »
14.3.2. Validar Schema XML
Validação de Schema XML
Assinatura
int ValidaXML(string XML, int tipoXML, out string msgResultado, out int qtdeErros, out string erroXML)
Descrição:
Funcionalidade para realizar a validação de Schema XML em um documento XML.
A validação é restrita aos XML da NF-e e das mensagens dos WS dos PL_005x e PL_006x suportados atualmente pela DLL.
É necessário informar qual documento XML que se prentende validar no parâmetro tipoXML.
Parâmetros:
| nome | tipo | fluxo | descrição |
|---|---|---|---|
| XML | string | entrada | informar uma string com o XML que será validada. |
| tipoXML | inteiro | entrada | informar o código do tipoXML do schema XML que será utilizado na validação |
| msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
| qtdeErros | inteiro | saída | retorna a quantidade de erros encontrados |
| erroXML | string | saída | retorna um texto com o erros de validações encontados |
Valores do tipoXML
- 0 - cabeçalho (cabecMsg_v1.02)
- 1 - NF-e assinada (nfe_v1.10.xsd)
- 2 - Envio de Lote de NF-e (enviNFe_v1.10.xsd)
- 3 - Retorno Lote de NF-e (retEnviNFe_v1.10.xsd)
- 4 - Busca Resultado de NF-e (consReciNFe_v1.10.xsd)
- 5 - Retorno de Resultado de NF-e (retConsReciNFe_v1.10.xd)
- 6 - Cancelamento de NF-e (cancNFe_v1.07.xsd)
- 7 - Retorno de Cancelamento de NF-e (retCancNFe_v1.07.xsd)
- 8 - Inutilizacao de Numeração de NF-e (inutNFe_v1.07.xsd)
- 9 - Retorno de Inutilização de NF-e (retInutNFe_v1.07.xsd)
- 10 - Consulta Situação de NF-e (consSitNFe_v1.07.xsd)
- 11 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v1.07.xsd)
- 12 - Consulta Status de Serviço (consStatServ_v1.07.xsd)
- 13 - Retorno de Consulta Status de Serviço (retConsStatServ_v1.07.xsd)
- 14 - Consulta Cadastro de Contribuintes (consCad_v1.01.xsd)
- 15 - Retorno da Consulta Cadastro de Contribuintes (retConsCad_v1.01.xsd)
- 16 - Proc NF-e (procNFe_v1.10.xsd)
- 17 - Proc CancNF-e (procCancNFe_v1.07.xsd)
- 18 - Proc InutNFe (procInutNFe_v1.07.xsd)
- 19 - NF-e assinada (nfe_v2.00.xsd)
- 20 - Envio de Lote de NF-e (enviNFe_v2.00.xsd)
- 21 - Retorno Lote de NF-e (retEnviNFe_v2.00.xsd)
- 22 - Busca Resultado de NF-e (consReciNFe_v2.00.xsd)
- 23 - Retorno de Resultado de NF-e (retConsReciNFe_v2.00.xd)
- 24 - Cancelamento de NF-e (cancNFe_v2.00.xsd)
- 25 - Retorno de Cancelamento de NF-e (retCancNFe_v2.00.xsd)
- 26 - Inutilizacao de Numeração de NF-e (inutNFe_v2.00.xsd)
- 27 - Retorno de Inutilização de NF-e (retInutNFe_v2.00.xsd)
- 28 - Consulta Situação de NF-e (consSitNFe_v2.00.xsd)
- 29 - Retorno de Consulta Situação de NF-e (retConsSitNFe_v2.00.xsd)
- 30 - Consulta Status de Serviço (consStatServ_v2.00.xsd)
- 31 - Retorno de Consulta Status de Serviço (retConsStatServ_v2.00.xsd)
- 32 - Consulta Cadastro de Contribuintes (consCad_v2.00.xsd)
- 33 - Retorno da Consulta Cadastro de Contribuintes (retConsCad_v2.00.xsd)
- 34 - Proc NF-e (procNFe_v2.00.xsd)
- 35 - Proc CancNF-e (procCancNFe_v2.00.xsd)
- 36 - Proc InutNFe (procInutNFe_v2.00.xsd)
Retorno:
O código numérico devolvido no parâmetro resultado tem os seguintes significados:
| código | Mensagem | origem | regra |
|---|---|---|---|
| 5501 | Mensagem XML é valida | DLL | - |
| 5502 | Erro: tipoXML [{0:0}] inválido (fora do intervalo {0:0}) | DLL | - |
| 5503 | Erro: XML mal formado [{0:0}] | DLL | - |
| 5504 | Erro: Arquivo Schemal XML [{0:0}] não localizado na pasta [{1:0]} | DLL | - |
| 5505 | Erro: XML não atende a especificação do Schema XML | DLL | - |
| 5506 | Erro: A validação da NF-e sem assinatura causa um erro de falta de assinatura que pode ser desprezado [{0:0}] | DLL | - |
código de retorno 5506
O Schema XML padrão do projeto prevê a existência da assinatura digital na NF-e, contudo, podemos validar o XML a NF-e antes da assinatura. Neste caso, teremos uma falha de validação de schema XML com código de retorno 5506 que poderá ser ignorada, pois a validação foi realizada em um XML sem assinatura digital.
Mensagens de Erro de falta de assinatura digital
em inglês
Qtde de Erros: 1 1 - Linha:999 Coluna:9 Erro:The element 'NFe' in namespace 'http://www.portalfiscal.inf.br/nfe' has incomplete content. List of possible elements expected: 'http://www.w3.org/2000/09/xmldsig#:Signature'.em português
Qtde de Erros: 1 > 1 - Linha:999 Coluna:9 Erro:O elemento 'NFe' no espaço para nome 'http://www.portalfiscal.inf.br/nfe' apresenta conteúdo incompleto. Lista de possíveis elementos esperados: 'http://www.w3.org/2000/09/xmldsig#:Signature'.
Histórico de atualização:
- 2010-02-02 - 2Gv0.0 - Versão preliminar.
Exemplos:
Visual Basic
' ' declaração das variáveis que serão utilizadas na passagem de parâmetros da DLL ' Dim XML As String ' informar o xml a ser validado Dim tipXML As Long ' tipo do XML a ser validado (Ex. 1 = NF-e assinada versão 1.10 (nfe_v1.10.xsd) Dim qtdeErros As Long ' quantide de Erros de validação Dim erroXML As String ' retorna com uma string com os erros de validação Dim msgResultado As String ' literal com resultado da chamada da DLL ' ' ' Importante: todas as variáveis utilizadas como parâmetro da DLL devem ser inicializadas ' ' Dim nomeArquivo As String ' nome do arquivo que será assinado ' nomeArquivo = "exemplo.xml" ' ' Carrega o conteúdo do nome do arquivo em XMLString ' Open nomeArquivo For Input As #1 XMLString = Input$(LOF(1), #1) Close #1 ' tipoXML = 1 ' indica tipo de documento validado, neste caso estamos validando um XML da NF-e versão 1.10 msgResultado = "" erroXML = "" qtdeErros = 0; ' Dim Resultado As Long ' Dim objNFeUtil As NFe_Util.Util ' ' instancia a DLL ' Set objNFeUtil = New NFe_Util.Util ' ' Faz a validação ' Resultado = objNFeUtil.ValidaXML(XML, tipoXML, msgResultado, qtdeErros, errosXML) ' ' tratar retorno ' If resultado = 5501 Then ' sucesso, NF-e ok MsgBox msgResultado, vbInformation, "Informação" Else ' ' erro de validação retonro <> 5501 ' se retorno = 5506 e a validação for antes da assinatura, considerar OK ' MsgBox "Processo de validação falhou..." & vbCrLf & msgResultado &vbCrLf & erroXML, vbExclamation, "Atenção" End If ' ' liberar DLL ' Set objNFeUtil = Nothing End Sub
- 14.3.2. Validar Schema XML
14.3. Validação de Schema XML - « Anterior
14.3.1. O que é um Schema XML? - Próximo »
14.3.3. Como sanear um XML com falha de Schema XML?