Pessoal, estou tentando validar um XML de CTE com rotina do Mauricio e Quintas porém sem sucesso, abaixo a rotina com informações do erro. alguém pode me ajuda mais uma vez me apontando onde estou errando:
---------------------------------------------------------------------
function validaxml()
LOCAL oDOMDoc, oSchema, ParseError
LOCAL cRETORNO:=HASH()
LOCAL cSchemaFilename:=''
cRETORNO['STATUS']:=.F.
cRETORNO['MSG']:=''
TRY
oDOMDoc := win_OleCreateObject( "MSXML2.DomDocument.5.0" )
//oDOMDoc := win_oleCreateObject( _MSXML2_DOMDocument )
CATCH
cRETORNO['MSG']:='Não foi possÃvel carregar o MSXML para validação do XML'
RETURN(cRETORNO)
END
TRY
oDOMDoc:async = .F.
oDOMDoc:resolveExternals := .F.
oDOMDoc:validateOnParse = .T.
oDOMDoc:LoadXML(cXML)
CATCH
cRETORNO['MSG']:='Não foi possÃvel carregar o arquivo XML para a validação.'
RETURN(cRETORNO)
END
IF oDOMDoc:parseError:errorCode <> 0 // XML não carregado
cRETORNO['MSG']:='Não foi possÃvel carregar o documento pois ele não corresponde ao seu Schema'+HB_OsNewLine()
RETURN(cRETORNO)
ENDIF
TRY
oSchema := win_OleCreateObject( "MSXML2.XMLSchemaCache.5.0" )
//oSchema := win_oleCreateObject( _MSXML2_XMLSchemaCache )
CATCH
cRETORNO['MSG']:='Não foi possÃvel carregar o MSXML para o schema do XML.'
RETURN(cRETORNO)
END
cSchemaFilename := 'c:\schemas\enviCte_v2.00.xsd'
****************************************
//pegou o esquema na pasta
// c:\schemas\cte_v2.00.xsd
****************************************
IF ! FILE(cSchemaFilename)
cRETORNO['MSG']:='Arquivo do schema não encontrado '+cSchemaFilename
RETURN(cRETORNO)
ENDIF
TRY
oSchema:add( 'http://www.portalfiscal.inf.br/cte', cSchemaFilename )
CATCH oError
cRETORNO['MSG']:='Falha '+HB_OsNewLine()
RETURN(cRETORNO)
END
oDOMDoc:Schemas := oSchema
ParseError := oDOMDoc:validate
msginfo(ParseError:errorCode)
msginfo(ParseError:reason)
IF ParseError:errorCode <> 0
cRetorno['nResult'] := ParseError:errorCode
cRETORNO['MSG'] := ParseError:reason
****************************************
//retorna o erro abaixo
//-1072898035C
// The element '{http://www.portalfiscal.inf.br/cte}cteProc' is used but not declared in the DTD/Schema.
****************************************
RETURN(cRetorno)
ENDIF
oDOMDoc := nil
ParseError := nil
oSchema := nil
cRETORNO['STATUS']:=.T.
RETURN(cRETORNO)
--------------------------------------------------------------------------------------------
Desde já obrigado
Gilberto