XML de NF-e ou CT-e ou MDF-e - Como validar usando os pacotes de esquemas do Governo 
Este artigo explica como fazer a validação de arquivos tipo XML, usando o aplicativo xmllint, e os pacotes de esquemas fornecidos pelo Governo.
[ Hits: 32.682  ]
Por: Arnaldo Luiz Estevao em 11/09/2012  
 
 
 
Arquivo mdfe.xml 
 
 
 
Como anteriormente, disponibilizo aqui o arquivo 
mdfe.xml :
<MDFe xmlns="http://www.portalfiscal.inf.br/mdfe"> 
<infMDFe versao="1.00" Id="MDFe50120900472038000167580000000000011412345678" > 
<ide><cUF>50</cUF><tpAmb>2</tpAmb><tpEmit>1</tpEmit><mod>58</mod><serie>0</serie> 
<nMDF>1</nMDF> 
<cMDF>00001123</cMDF> 
<cDV>4</cDV> 
<modal>1</modal> 
<dhEmi>2012-09-05T13:37:53</dhEmi> 
<tpEmis>1</tpEmis> 
<procEmi>0</procEmi> 
<verProc>1.00</verProc> 
<UFIni>MS</UFIni> 
<UFFim>MS</UFFim> 
<infMunCarrega> 
<cMunCarrega>5002704</cMunCarrega> 
<xMunCarrega>CAMPO GRANDE</xMunCarrega> 
</infMunCarrega> 
</ide><emit> 
<CNPJ>00172031000127</CNPJ> 
<IE>312886261</IE> 
<xNome>NOME DA EMPRESA</xNome> 
<enderEmit> 
<xLgr>Rod BR 263</xLgr> 
<nro>3550</nro> 
<xBairro>JARDIM MONUMENTO</xBairro> 
<cMun>5002704</cMun> 
<xMun>CAMPO GRANDE</xMun> 
<CEP>79072100</CEP> 
<UF>MS</UF> 
<fone>06732210171</fone> 
</enderEmit> 
</emit> 
<infModal versaoModal="1.00"> 
<rodo> 
<RNTRC>02852311</RNTRC> 
<veicPrincipal> 
<cInt>1</cInt> 
<placa>HRA1467</placa> 
<tara>13000</tara> 
<capKG>10000</capKG> 
<capM3>40</capM3> 
<condutor> 
<xNome>Arnaldo Luiz Estevao</xNome> 
<CPF>12345678909</CPF> 
</condutor> 
</veicPrincipal> 
</rodo> 
</infModal> 
<infDoc> 
<infMunDescarga> 
<cMunDescarga>5002704</cMunDescarga> 
<xMunDescarga>CAMPO GRANDE</xMunDescarga> 
<infCTe> 
<chCTe>50220900472038000167570000000001041000001935</chCTe> 
</infCTe> 
</infMunDescarga> 
</infDoc> 
<tot> 
<qCTe>1</qCTe> 
<vCarga>100000</vCarga> 
<cUnid>01</cUnid> 
<qCarga>9800</qCarga> 
</tot> 
</infMDFe> 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod> 
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod><Reference URI="#MDFe501209004720380001675800000000000114"> 
<Transforms> 
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"> 
</Transform> 
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"> 
</Transform> 
</Transforms> 
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> 
<DigestValue>kHZt9HaiTnOBWqRSnT6LpmAWwOw=</DigestValue> 
</Reference> 
</SignedInfo> 
<SignatureValue>dc19iyASADSSADSDwfAp/BLBJVV6ob1SDSDSDSVcFK9t3yV/iBwgt1SASDSDSAAAA7O4AEM0Y/bk/8Dtr2Z7ZhnckJ/F9q0oZhONZDSSSAAASQacMX3HkgE78CRXL8kGzCMbRt+G6I9lZATUliQ1YrBrR5Ht44xTT1+0CmVUdZXVt9a1vWqe0U6Aq8+adIDNR0hgGYdKoP0A4 2s3MvrzjvBMIYRIXmprEjxk6u9vATtxDsy1IQkRgyqYZX9g7cbTkbADuJASsQi/zzCvwWBYOCQeeELpzf7lDf5XCzBHqIMKkKjxUUhhelCENmLPzLoPEdX1+ks8O3lIW+dxSgwBCw==</SignatureValue> 
<KeyInfo> 
<X509Data>
 
<X509Certificate>MIIH4DCCBcigAwIBAgIIHFr4nWMKggEwDQawjhghAvcNAQELBQAwTDELMAkGA1UEBhMCQlIxEzARBgNVBAASASASAQQQQmFza WwxKDAmBgNVBAMTH1NFUkFTQSBDZXJ0aWZpY2Fkb3JhIERpZ2l0YWwgdjIwHhcNMTIwNjA0MTgwNjAwWhcNMTMwNjA0MTgwNjAwWjCCAQExCzAJ 
BgNVBAYTAkJSMRMwEQYDVQQKEwpJQ1AtQnJhc2lsMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEYMBYGA1UECxMPMDAwMDAxMDAzMTk1ODU3MRQwEg 
YDVQQLEwsoRU0gQlJBTkNPKTEUMBIGA1UECxMLKEVNIEJSQU5DTykxFDASBgNVBAsTCyhFTSBCUkFOQ08pMRQwEgYDVQQLEwsoRU0gQlJBTkNPKTEUM 
BIGA1UECxMLKEVNIEJSQU5DTykxPzA9BgNVBAMTNlNFTkUgRU1QUkVTQSBERSBUUkFOU1BPUlRFIERFIENBUkdBUyBFIEVOQ09NRU5EQVMgTFREQTCCAS 
IwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALPiRQ+H+dRyX6oszguwWzQ4+1dmpl88E8f5JGFNccjtdFS45PvcXvZnGo6RPA71+R4r /0PMWWaTqJncax23bCEEB+X1PmuOQEpHTlkE2tkYvkB27qr62a4DLKPWdwduRa3pg3kukHonTd57bHhUr25q2Wl78vYA96OiIptaoMYcZxQo93SBOZhjuhghPD9xbjvEFtNt /E5vauZfjTOwq7Vxm+HdYIiC0hPXGrI2f1Zt+IgIojCbrd9wJ2opjS2qMjRuBGfPwukJS24eD7QydFeaVJNfKJFRnd5WADyRjm+0AbPvYv9z7Ooy7WClMKGdIRRSPVsS1sgIs 
255lBwKxXkCAwEAAaOCAw0wggMJMIGXBggrBgEFBQcBAQSBijCBhzBHBggrBgEFBQcwAoY7aHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29tLmJyL2NhZ 
GVpYXMvc2VyYXNhY2R2Mi5wN2IwPAYIKwYBBQUHMAGGMGh0dHA6Ly9vY3NwLmNlcnRpZmljYWRvZGlnaXRhbC5jb20uYnIvc2VyYXNhY2R2MjAfBgNVHSMEGDAW 
gBSa4IMQ1yab6bragrKBzjka04dwhjBxBgNVHSAEajBoMGYGBmBMAQIBBjBcMFoGCCsGAQUFBwIBFk5odHRwOi8vcHVibGljYWNhby5jZXJ0aWZpY2Fkb2RpZ2l0YWw 
uY29tLmJyL3JlcG9zaXRvcmlvL2RwYy9kZWNsYXJhY2FvLXNjZC5wZGYwgfAGA1UdHwSB6DCB5TBJoEegRYZDaHR0cDovL3d3dy5jZXJ0aWZpY2Fkb2RpZ2l0YWwuY29 
tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FjZHYyLmNybDBDoEGgP4Y9aHR0cDovL2xjci5jZXJ0aWZpY2Fkb3MuY29tLmJyL3JlcG9zaXRvcmlvL2xjci9zZXJhc2FjZHYyLm 
NybDBToFGgT4ZNaHR0cDovL3JlcG9zaXRvcmlvLmljcGJyYXNpbC5nb3YuYnIvbGNyL1NlcmFzYS9yZXBvc2l0b3Jpby9sY3Ivc2VyYXNhY2R2Mi5jcmwwDgYDVR0PAQH /BAQDAgXgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBtgYDVR0RBIGuMIGrgQ9TRU5FVEBHTE9CTy5DT02gPgYFYEwBAwSgNRMzMTcwNDE5 
NjYzOTEzNjgzMzEzNDEyMDM4ODgwOTkwMDAwMDAwMDAwMjI0ODAzU1NQIE1ToCQGBWBMAQMCoBsTGVNFUkdJTyBGRVJNQVUgREUgT0xJVkVJUkGgGQYFYE wBAwOgEBMOMDA0NzIwMzgwMDAxNjegFwYFYEwBAwegDhMMMDAwMDAwMDAwMDAwMA0GCSqGSIb3DQEBCwUAA4ICAQByBqTahYUolByK0xHhEcz76OQE 
iHIKGsz47ArD5HvvZF+lY9ddY93Zio4PB8Md2yOsqEHp+bsXHmyWrPMyA8MAFF++VFM0VbYSRNi7LTVABIspXZPSBxJHy7DYMgG+nqztqfmp7LLyPSDmdchN /oa3r4egSaRJwBTQdssPgjwMlD5yDS6KCt5cWesMOd8+iNiujHLj29J0Otxw/LZVlkkb38C /dlHVO0CeYtgVikRbJEIH91ZfbfKp7cMdIA5+sy0X2GWjFzRIJOITFf+xjMLNBvHSozM9wtpq7GWTaqVQOMzRBFFN4CaoOaQtbZlrsYL+5+uJHJgcGHyz+Lsa0KWynVzr 
NFiMBzz9TCEy6tvpmqhwUCrC6EAm4IahcjfkcQuLQwmebTYejCrFMx3H9yZNYjL5zHkWXyScZ8GieDhi4GDnduwgztrV3dw6BhoWNHoINPJ8jUvZuBUyo9e /oSmsxhkOH2oF6GgAphcR0WJqS7m1rB8kMFI /mrt8AZF4VAZw3hHsWZdo6s6km8YImb0nog3+gKYb+3F5aBnxIA850HNbB3VZ3wIH97xD07nsIKA5KE9O6UtF4leF4MeBndVZUqmBtqkcuY6kTukXl 
vGfYBeHeVDDgXqkoViulJZrAwVM8DWUsOr3qjHVRfwZxKB0CllGGQc7iHeXnt+d0D5O+Q==</X509Certificate> 
</X509Data> 
</KeyInfo> 
</Signature> 
</MDFe>
 
 
  Página anterior       
Páginas do artigo
   1. 
Explicação 
   2. 
Separando e executando o teste 
   3. Arquivo mdfe.xml
Outros artigos deste autor
   Impressão remota via WEB
   Instalando Slackware 11.0 em um pendrive
   Autenticação mútua SSL em servidores de NF-e e CT-e
   Phperl, minha gambiarra para usar Perl como se fosse PHP
Leitura recomendada
   Configurando OpenSSH no Windows Server 2003 para autenticação por chave (sem senha)
   Terminal Didático - Shell Script via WEB (PHP + Bootstrap)
   Impressora PDF via Samba para estações Windows
   Antispam em Shell Script
   Script "apagador de linhas"
 
  
 
Comentários
	
		
		 
		Muito bom seu artigo...estou querendo usar o xmllint para validar um xml de NF-e, mais esta dando o seguinte erro: 
"NFe.xml:1: element NFe: Schemas validity error : Element '{http://www.portalfiscal.inf.br/nfe}NFe': No matching global declaration available for the validation root. 
SAN.xml fails to validate" 
 
Usei da seguinte forma "xmllint -noout -schema leiauteNFe_v2.00.xsd NFe.xml" ...esse xml esta assinado e valida no ste da sefaz-rs...inclusive esta ate autorizada....eu qureria usar essa regra para validar meus xml de nf-e....sabe me dizer como proceder?
	
	
	
	
	
	
	
 
	
		
		 
		fica difícil responder sem analisar seu xml, essa mensagem significa que o xmlns da tag raiz não foi informada ou que não ha somente um único elemento raiz no XML, quando voce envia para a SEFAZ, a mensagem vai dentro um envelope soap que contem o xmlns, quando voce vai validar pelo xmllint precisa colocar dentro de uma tag raiz o xmlns padrão do projeto, como no exemplo do teste do modal 
	
	
	
	
	
	
	
		
			
				
				
					 
					 
					
					
						
							Mensagem 
							fica difícil responder sem analisar seu xml, essa mensagem significa que o xmlns da tag raiz não foi informada ou que não ha somente um único elemento raiz no XML, quando voce envia para a SEFAZ, a mensagem vai dentro um envelope soap que contem o xmlns, quando voce vai validar pelo xmllint precisa colocar dentro de uma tag raiz o xmlns padrão do projeto, como no exemplo do teste do modal  
						 
					
	
					 
				 
			 	
			
		 
	 
	 
	
 
	
		
		 
		Deu certo, estava usando o xsd errado...tem que ser o "nfe_v2.00.xsd" ...durante a validacao deu erro nas unidades dos itens, se tiver com dois caracteres da erro, entao eu alterei, tendo mais de dois da certo, o que é estranho pois é de uma nf autorizada hoje mesmo....mais deu certo :)
	
	
	
	
	
	
	
		
			
				
				
					 
					 
					
					
						
							Mensagem 
							Deu certo, estava usando o xsd errado...tem que ser o "nfe_v2.00.xsd" ...durante a validacao deu erro nas unidades dos itens, se tiver com dois caracteres da erro, entao eu alterei, tendo mais de dois da certo, o que é estranho pois é de uma nf autorizada hoje mesmo....mais deu certo :) 
						 
					
	
					 
				 
			 	
			
		 
	 
	 
	
 
	
		
		 
		Caramba meu sonho era ver escritórios contábeis (no qual trabalho) funcionando no linux. Maioria dos programas do governo pararam no windows XP que em breve nem suporte terá.
	
	
	
	
	
	
	
		
			
				
				
					 
					 
					
					
						
							Mensagem 
							Caramba meu sonho era ver escritórios contábeis (no qual trabalho) funcionando no linux. Maioria dos programas do governo pararam no windows XP que em breve nem suporte terá. 
						 
					
	
					 
				 
			 	
			
		 
	 
	 
	
 
	
		
		 
		Na tag abaixo, você gerar um hash. Estou desenvolvendo uma nota Mdfe, e gostaria de saber com quais informações do XML é gerado esse hash? É sha1?  
 
<infMDFe versao="1.00" Id="MDFe50120900472038000167580000000000011412345678" >
	
	
	
	
	
	
	
		
			
				
				
					 
					 
					
					
						
							Mensagem 
							Na tag abaixo, você gerar um hash. Estou desenvolvendo uma nota Mdfe, e gostaria de saber com quais informações do XML é gerado esse hash? É sha1? 
<infMDFe versao="1.00" Id="MDFe50120900472038000167580000000000011412345678" > 
						 
					
	
					 
				 
			 	
			
		 
	 
	 
	
 
 
 
Contribuir com comentário 
 
Enviar