Olá,
Estou efetuando a validação de uma nota na versão 2.00 com o método
schemaValidate da classe DOMDocument. A versão do schema que estou
utilizando é a versão “PL_006e”, que já está disponível para o
ambiente de homologação segundo
http://www.nfe.fazenda.gov.br/. Ao
efetuar a validação ele me imprime 5 erros (sendo que o último é por
causa que a nota esta sem assinatura), são eles:
número de Erros: 5
LibXMLError Object
(
[level] => 2
[code] => 1839
[column] => 0
[message] => Element '{
http://www.portalfiscal.inf.br/nfe}nro':
[facet 'pattern'] The value '41' is not accepted by the pattern '[!-ÿ]
{1}[ -ÿ]{0,}[!-ÿ]{1}|[!-ÿ]{1}'.
[file] => file:///D:/projetosWeb/trabalhoLocal/XMLS_teste/copianovaNFE2.xml
[line] => 49
)
LibXMLError Object
(
[level] => 2
[code] => 1824
[column] => 0
[message] => Element '{
http://www.portalfiscal.inf.br/nfe}nro':
'41' is not a valid value of the local atomic type.
[file] => file:///D:/projetosWeb/trabalhoLocal/XMLS_teste/copianovaNFE2.xml
[line] => 49
)
LibXMLError Object
(
[level] => 2
[code] => 1839
[column] => 0
[message] => Element '{
http://www.portalfiscal.inf.br/nfe}IE':
[facet 'pattern'] The value '' is not accepted by the pattern 'ISENTO|
[0-9]{0,14}|PR[0-9]{4,8}'.
[file] => file:///D:/projetosWeb/trabalhoLocal/XMLS_teste/copianovaNFE2.xml
[line] => 59
)
LibXMLError Object
(
[level] => 2
[code] => 1824
[column] => 0
[message] => Element '{
http://www.portalfiscal.inf.br/nfe}IE': ''
is not a valid value of the atomic type '{http://
www.portalfiscal.inf.br/nfe}TIeDest'.
[file] => file:///D:/projetosWeb/trabalhoLocal/XMLS_teste/copianovaNFE2.xml
[line] => 59
)
LibXMLError Object
(
[level] => 2
[code] => 1871
[column] => 0
[message] => Element '{
http://www.portalfiscal.inf.br/nfe}NFe':
Missing child element(s). Expected is ( {
http://www.w3.org/2000/09/
xmldsig#}Signature ).
[file] => file:///D:/projetosWeb/trabalhoLocal/XMLS_teste/copianovaNFE2.xml
[line] => 2
)
O problema é que ao fazer a validação pelo site do sefaz RS
http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx, A nota está OK, sem erro
nenhum. Queria saber se alguém pode me ajudar!!!.
Desde já agradeço.
Abaixo, a nota e o código php
<?xml version="1.0" encoding="utf-8"?>
<NFe xmlns="
http://www.portalfiscal.inf.br/nfe">
<infNFe versao="2.00"
Id="NFe35100810752305000103550010000000071001241174">
<ide>
<cUF>35</cUF>
<cNF>00124117</cNF>
<natOp>2</natOp>
<indPag>0</indPag>
<mod>55</mod>
<serie>1</serie>
<nNF>7</nNF>
<dEmi>2010-08-18</dEmi>
<dSaiEnt>2010-08-18</dSaiEnt>
<hSaiEnt>16:00:00</hSaiEnt>
<tpNF>1</tpNF>
<cMunFG>3541000</cMunFG>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>4</cDV>
<tpAmb>2</tpAmb>
<finNFe>1</finNFe>
<procEmi>0</procEmi>
<verProc>1.0</verProc>
</ide>
<emit>
<CNPJ>11111111111111</CNPJ>
<xNome>xxxxxx</xNome>
<xFant>xxxx</xFant>
<enderEmit>
<xLgr>xxxx</xLgr>
<nro>164</nro>
<xCpl>cj 53</xCpl>
<xBairro>xxxxxx</xBairro>
<cMun>3548500</cMun>
<xMun>xxxxxxx</xMun>
<UF>SP</UF>
<CEP>11051000</CEP>
<cPais>1058</cPais>
<xPais>Brasil</xPais>
</enderEmit>
<IE>111111111111</IE>
<CRT>1</CRT>
</emit>
<dest>
<CNPJ>04663622000150</CNPJ>
<xNome>jorge bar me</xNome>
<enderDest>
<xLgr>xxxxxxxxxxx</xLgr>
<nro>41</nro>
<xCpl>casa</xCpl>
<xBairro>xxxxxx</xBairro>
<cMun>3541000</cMun>
<xMun>Praia Grande</xMun>
<UF>SP</UF>
<CEP>11712000</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
</enderDest>
<IE/>
</dest>
<det nItem="1">
<prod>
<cProd>1</cProd>
<cEAN/>
<xProd>Web Site</xProd>
<NCM>12378978</NCM>
<CFOP>5401</CFOP>
<uCom>1</uCom>
<qCom>0.0001</qCom>
<vUnCom>0.0000000001</vUnCom>
<vProd>0.01</vProd>
<cEANTrib/>
<uTrib>1</uTrib>
<qTrib>0.0001</qTrib>
<vUnTrib>0.0000000001</vUnTrib>
<vFrete>0.01</vFrete>
<vSeg>0.01</vSeg>
<vDesc>0.01</vDesc>
<indTot>0</indTot>
</prod>
<imposto>
<ICMS>
<ICMS00>
<orig>0</orig>
<CST>00</CST>
<modBC>0</modBC>
<vBC>0.01</vBC>
<pICMS>0.01</pICMS>
<vICMS>0.01</vICMS>
</ICMS00>
</ICMS>
<IPI>
<clEnq>1</clEnq>
<cSelo>1</cSelo>
<qSelo>1</qSelo>
<cEnq>1</cEnq>
<IPINT>
<CST>02</CST>
</IPINT>
</IPI>
<PIS>
<PISAliq>
<CST>01</CST>
<vBC>0.01</vBC>
<pPIS>0.01</pPIS>
<vPIS>0.01</vPIS>
</PISAliq>
</PIS>
<COFINS>
<COFINSAliq>
<CST>01</CST>
<vBC>0.01</vBC>
<pCOFINS>0.01</pCOFINS>
<vCOFINS>0.01</vCOFINS>
</COFINSAliq>
</COFINS>
</imposto>
</det>
<total>
<ICMSTot>
<vBC>1.00</vBC>
<vICMS>0.01</vICMS>
<vBCST>1.00</vBCST>
<vST>0.01</vST>
<vProd>0.01</vProd>
<vFrete>0.01</vFrete>
<vSeg>0.01</vSeg>
<vDesc>0.01</vDesc>
<vII>0.01</vII>
<vIPI>0.01</vIPI>
<vPIS>0.01</vPIS>
<vCOFINS>0.01</vCOFINS>
<vOutro>0.01</vOutro>
<vNF>0.02</vNF>
</ICMSTot>
<ISSQNtot/>
<retTrib/>
</total>
<transp>
<modFrete>0</modFrete>
</transp>
</infNFe>
</NFe>
O Codigo:
<?php
function print_r_pre($valor){
echo "<pre>";
print_r($valor);
echo "</pre>";
}
if(!defined('sugarEntry'))define('sugarEntry', true);
libxml_use_internal_errors(true);
/* Cria um novo objeto da classe DomDocument */
$objDom = new DOMDocument('1.0','utf-8');
echo $objDom->xmlEncoding;
/* Carrega o arquivo XML */
$arquivoAValidar = "XMLS_teste/copianovaNFE2.xml";
$objDom->load($arquivoAValidar);
/* Tenta validar os dados utilizando o arquivo XSD */
if (!$objDom->schemaValidate("schema_XML/PL_006e/nfe_v2.00.xsd")) {
// if (!$objDom->schemaValidate("schema_XML/PL_005d/
consSitNFe_v1.07.xsd")) {
$arrayAllErrors = libxml_get_errors();
/* Cada elemento do array $arrayAllErrors ser� um objeto do tipo
LibXmlError */
echo "<br> XML <b>: ".$arquivoAValidar."</b><br>";
echo "<br> número de Erros:
".count($arrayAllErrors)."<br>";
for($i=0; $i<count($arrayAllErrors); $i++){
print_r_pre($arrayAllErrors[$i]);
}
} else {
/* XML validado! */
echo "XML <b>".$arquivoAValidar."</b> obedece as regras definidas
no arquivo XSD!";
}
?>