Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Próxima »

Função: XmlFVldSch

Executa a validação de um arquivo XML com relação a um arquivo XSD (Schema).

XmlFVldSch ( < cXMLPath>, < cSchemaPath>, < cError>, < cWarning> ) --> lRetorno

 

NomeTipoDescriçãoObrigatórioReferência
cXMLPathCaracterIndica o arquivo XML com o path que será validado.X 
cSchemaPathCaracterIndica o arquivo XSD com o path para validação do arquivo XML.X 
cErrorCaracterCaso ocorra algum erro durante a validação do arquivo XML, a variável será preenchida com a descrição do erro ocorrido.XX
cWarningCaracterCaso ocorra algum alerta de 'warning' durante a validação do arquivo XML, a variável será preenchida com a descrição do 'warning' ocorrido.XX

 

lRetorno
    (logico)
  • Retorna verdadeiro (.T.) se o arquivo XML é válido. Caso contrário, retorna falso (.F.) se o arquivo XML não é válido.

XML - Sigla de Extensible Markup Language, o XML é uma linguagem baseada em tags semelhante ao HTML. Sua principal característica é a extensibilidade. Quem emite um documento XML pode criar tags personalizadas, que são definidas num documento anexo, que tem extensão XSD.

XSD - Sigla de XML Schema Definition. Arquivo associado a um documento XML que descreve e valida os dados no documento, permitindo a criação de tipos de dados personalizados e regras específicas para os mesmos.

Essa função trabalha somente com arquivos e diretórios localizados no servidor (rootPath). Caso seja passado um caminho de arquivo do cliente, o programa será interrompido e será apresentada a mensagem "Only server path are allowed on XmlFVldSch".

Função disponível a partir da build 7.00.070910P.

#INCLUDE "TOTVS.CH"
#INCLUDE "XMLXFUN.CH"
User Function ExeXMLXSD()
Local cError := ""
Local cWarning := ""
Local cXML := "\Teste1.xml"
Local cXMLInvalid := "\Teste2.xml"
Local cXSD := "\Teste.xsd"
Local oXml := NIL
Local oXsd := NIL

//Gera o Objeto XML
oXml := XmlParser( GeraXML(), "_", @cError, @cWarning )

//Gera o Objeto XSD
oXsd := XmlParser( GeraXSD(), "_", @cError, @cWarning )

// Tranforma o Objeto XML em arquivo XML
SAVE oXml XMLFILE cXML

// Tranforma o Objeto XSD em arquivo XML
SAVE oXsd XMLFILE cXsd

//Gera o Objeto XML Invalido
oXml := XmlParser( GeraXMLInvalid(), "_", @cError, @cWarning )

// Tranforma o Objeto XML invalido em arquivo XML
SAVE oXml XMLFILE cXMLInvalid

// Valida o arquivo XML com o XSD
if XmlFVldSch ( cXML, cXSD, @cError, @cWarning )
Alert ("XML Valido")
else
Alert ("XML Invalido. Erro: "+ cError+" Warning "+ cWarning)
endif

// Valida o arquivo XML com o XSD
if XmlFVldSch ( cXMLInvalid, cXSD, @cError, @cWarning )
Alert ("XML Valido")
else
Alert ("XML Invalido. Erro: "+ cError+" Warning "+ cWarning)
endif
Return oXml

// função para gerar uma string contendo um xml
Static Function GeraXML()
Local cScript := '<?xml version="1.0" encoding="UTF-8"?>'
cScript += "<pedido>"
cScript += " <NomeCliente>Microsiga Software S/A</NomeCliente>"
cScript += " <Endereco>Av. Braz Leme</Endereco>"
cScript += " <Numero>1361</Numero>"
cScript += " <Data>22-03-2005</Data>"
cScript += " <Itens>"
cScript += " <Item>"cScript += " <Produto>Prothues</Produto>"
cScript += " <Quantidade>1</Quantidade>"
cScript += " <Preco>100.00</Preco>"
cScript += " </Item>"
cScript += " <Item>"
cScript += " <Produto>ERP</Produto>"
cScript += " <Quantidade>2</Quantidade>"
cScript += " <Preco>50.00</Preco>"
cScript += " </Item>"
cScript += " </Itens>"
cScript += "</pedido>"
Return cScript

// função para gerar uma string contendo um xml invalido
Static Function GeraXMLInvalid()
Local cScript := '<?xml version="1.0" encoding="UTF-8"?>'
cScript += "<pedido>"
cScript += " <NomeCliente>Microsiga Software S/A</NomeCliente>"
cScript += " <Endereco>Av. Braz Leme</Endereco>"
cScript += " <Numero>1361</Numero>"
cScript += " <Data>22-03-2005</Data>"
cScript += " <Itens>"
cScript += " <Item>"
cScript += " <Produto>Prothues</Produto>"
cScript += " <Quantidade>ABC</Quantidade>" //quantidade com conteudo invalido
cScript += " <Preco>100.00</Preco>"
cScript += " </Item>"
cScript += " <Item>"
cScript += " <Produto>ERP</Produto>"
cScript += " <Quantidade>2</Quantidade>"
cScript += " <Preco>50.00</Preco>"
cScript += " </Item>"
cScript += " </Itens>"
cScript += "</pedido>"
Return cScript

// função para gerar uma string contendo um xsd
Static Function GeraXSD()
Local cScript := '<?xml version="1.0" encoding="utf-16"?>'
cScript += '<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="NewDataSet"' + ;
' xmlns:xs="http://www.w3.org/2001/XMLSchema">'
cScript += ' <xs:element name="pedido">'
cScript += ' <xs:complexType>'
cScript += ' <xs:sequence>'
cScript += ' <xs:element minOccurs="0" name="NomeCliente" type="xs:string" />'
cScript += ' <xs:element minOccurs="0" name="Endereco" type="xs:string" />'
cScript += ' <xs:element minOccurs="0" name="Numero" type="xs:string" />'
cScript += ' <xs:element minOccurs="0" name="Data" type="xs:string" />'
cScript += ' <xs:element minOccurs="0" maxOccurs="unbounded" name="Itens">'
cScript += ' <xs:complexType>'
cScript += ' <xs:sequence>'
cScript += ' <xs:element minOccurs="0" maxOccurs="unbounded" name="Item">'
cScript += ' <xs:complexType>'
cScript += ' <xs:sequence>'
cScript += ' <xs:element minOccurs="0" name="Produto" type="xs:string" />'
cScript += ' <xs:element minOccurs="0" name="Quantidade" type="xs:integer" />'
cScript += ' <xs:element minOccurs="0" name="Preco" type="xs:float" />'
cScript += ' </xs:sequence>'
cScript += ' </xs:complexType>'
cScript += ' </xs:element>'
cScript += ' </xs:sequence>'
cScript += ' </xs:complexType>'
cScript += ' </xs:element>'
cScript += ' </xs:sequence>'
cScript += ' </xs:complexType>'
cScript += ' </xs:element>'
cScript += '</xs:schema>'
Return cScript
Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10

 

  • Sem rótulos