Falha de Validação da NFe
Contribuição de Djalma Fadel Junior.
Existe um bug conhecido na libxml2 versão 2....
Segundo os autores do projeto este bug esta corrigido a partir da verão 2.7.3, mas como a maiorias as distribuições linux 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.02.xsd
de:
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 lib e verificar pelo phpinfo se a mesma foi incorporada ao php.
Outro problema com a validação foi notado por Álvaro Nunes Melo. Acontece com a palavra 'ISENTO' no campo IE do destinatário.
Mudar a expressão regular no arquivo tiposBasico_v1.02.xsd permite a validação do XML.
de:
<xs:pattern value="[0-9]{0,14}|ISENTO|PR[0-9]{4,8}"/>
para:
<xs:pattern value="ISENTO|[0-9]{0,14}|PR[0-9]{4,8}"/>