Validação de XML usando XSD com a lib lxml.

352 views
Skip to first unread message

Lukas Wilkeer

unread,
Aug 18, 2014, 4:39:43 PM8/18/14
to python...@googlegroups.com
Boa Tarde Pessoal,

Estou tendo uma grande dificuldade em validar um XML de NFe com base em um XSD do schema  PL006s das Notas Fiscais Eletrônica.

Criar um teste unitário para que eu pudesse validar este o xml, mas ele retorna o erro:

======================================================================
ERROR: test_schema_pl_006s (__main__.TestSchemaXML)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_xmlfornfe.py", line 94, in test_schema_pl_006s
    xmlschema.assertValid(nfe)
  File "lxml.etree.pyx", line 3303, in lxml.etree._Validator.assertValid (src/lxml/lxml.etree.c:159786)
DocumentInvalid: Element 'TNFe': No matching global declaration available for the validation root., line 1

----------------------------------------------------------------------
Ran 6 tests in 0.021s


Eu já tentei de tudo, mudei as tagas, pesquisei bastante, mas ainda não consegui entender muito a respeito deste erro. 


Desde já agradeço.


jeferson perito

unread,
Aug 21, 2014, 5:56:53 AM8/21/14
to python...@googlegroups.com

Resolvi esse problema,  só que em java. Eh que vc tem que achar uma forma de quando carregar o teu XSD,  carregue os outros que são incluídos no XSD principal. Procure algo como carregar múltiplos schemas  :)

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Marcilene Ribeiro

unread,
Aug 21, 2014, 7:35:08 AM8/21/14
to python...@googlegroups.com
Oi Lukas,



--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo quot;Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Atenciosamente,

Marcilene Ribeiro.

Analista Desenvolvedora Python-OpenObject.
 
"Quanto melhor é adquirir a sabedoria do que o ouro! E mais excelente, adquirir a prudência do que a prata!" Provérbios 16:16

Linux - Junior Polegato

unread,
Aug 21, 2014, 8:03:32 AM8/21/14
to python...@googlegroups.com
Em 21-08-2014 06:56, jeferson perito escreveu:
>
> Resolvi esse problema, só que em java. Eh que vc tem que achar uma
> forma de quando carregar o teu XSD, carregue os outros que são
> incluídos no XSD principal. Procure algo como carregar múltiplos
> schemas :)
>

Olá!

Eu tenho dentro do Pole [1] o PoleNFe, que junto com o PoleXML,
que usa lxml, e PoleXmlSec, fazem todo o trabalho, inclusive validação
com XSD, assinatura, envio, consulta, protocolação, download, e os
outros serviços, confira!

[1] https://github.com/JuniorPolegato/pole

--

[]'s

Junior Polegato

Lukas Wilkeer

unread,
Aug 22, 2014, 6:14:12 PM8/22/14
to python...@googlegroups.com
Oi Marcile, 

Eu fiz o que você falou e o erro continuou o mesmo, só mudou a forma de output.

/home/lukaswilkeer/web2py/applications/spotnfe/uploads/nfe.xml:1:0:ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element 'TNFe': No matching global declaration available for the validation root.
.

Lukas Wilkeer

unread,
Aug 22, 2014, 6:15:48 PM8/22/14
to python...@googlegroups.com
Polegato,

Eu dei uma olhada no Pole, e me parece que ele emite e se comunica com a API do governo de uma vez.
Eu preciso somente gerar o XML pois temos uma API Rest para esta comunicação.
Obs: Em breve esta API vai estar disponível para o publico. 

Linux - Junior Polegato

unread,
Aug 22, 2014, 9:09:49 PM8/22/14
to python...@googlegroups.com

Olá!

Se olhar apenas o código do PoleXML, verá que tem a função "validar", é o que você quer.

Tem também "assinar" e "verificar_assinatura", podem lhe serem úteis.

[]'s

Junior Polegato

[1] https://github.com/JuniorPolegato/pole/blob/master/fontes/pole/PoleXML.py

--
Reply all
Reply to author
Forward
0 new messages