Skip to content

Falhas de Validação

robmachado edited this page Apr 4, 2013 · 8 revisions

Contribuição de Djalma Fadel Junior.

Existe um bug conhecido na libxml2 versão 2.... Segundo os autores do projeto este bug está parcialmente corrigido (erro persiste na versão 2.7.3), mas como a maiorias as distribuições Linux e Windows (XAMMP, etc..) ainda usa versões anteriores os próprios autores do projeto (libxml2) me orientaram a alterar o xsd para eliminar o erro. Portanto, a melhor 'solução' (gambiarra) para usar as libs antigas foi modificar a expressão regular do arquivo tiposBasico_v1.03.xsd, no tipo "TString" de: [!-ÿ]{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}

para: [!-ÿ]{1}[ -ÿ]*[!-ÿ]{1}|[!-ÿ]{1} Ou seja simplismente trocar o {0,} por * Ambas expressões regulares significam a mesma coisa, porém a original deveria funcionar, não fosse o problema com a libxml2. Quem puder deve atualizar a libXML e verificar pelo phpinfo se a mesma foi incorporada ao php.

Contribuição de Edmar Wiggers

Outro problema com a validação foi notado por Álvaro Nunes Melo. Acontece com a palavra 'ISENTO' no campo IE do destinatário ou do emitente ("TIeDest" e "TIe"). Mudar a expressão regular no arquivo tiposBasico_v1.03.xsd permite a validação do XML, quando a IE é "vazia" ou "ISENTO" de: <xs:pattern value="[0-9]{0,14}|ISENTO"/> para: <xs:pattern value="ISENTO|[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?[0-9]?"/>