Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/327912/newLayout.css

...

Função: XmlFVldSch

...

Realiza a validação de um arquivo XML utilizando um XSD (XML Schema Definition).

Sintaxe

Bloco de código
lRetorno := XmlFVldSch(

...

 <cXML>, <cXSD>, <cError>, <cWarning> )

Parâmetros

...

NomeTipoDescriçãoObrigatórioReferência

...

cXML

...

Caractere

Indica o arquivo XML

...

que será validado

...

X

...

 
cXSD

...

CaractereIndica o arquivo XSD

...

utilizado na validação do

...

XML

...

X 
cError

...

CaractereIndica a variável que será preenchida com a descrição do erro

...

observado durante a validação do XMLXX
cWarning

...

CaractereIndica a variável que será preenchida com a descrição do

...

alerta observado durante a validação do XMLXX

Retorno

NomeTipoDescrição
lRetorno

...

Lógico

Retorna verdadeiro (.T.)

...

caso o arquivo XML

...

for validado a partir do XSD e, caso contrário, retorna falso (.F.)

...

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.

 

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)  endifReturn oXml// função para gerar uma string contendo um xmlStatic 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 invalidoStatic 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 invalidocScript += "      <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 xsdStatic 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

...

e preenche as variáveis cError e cWarning quando não for possível validar o XML.

Observações

  1. Função disponibilizada a partir do build 7.00.070910p.
  2. Essa função somente acessa arquivos e diretórios localizados a partir do rootPath.

Exemplos

Exemplo 
Toggle Cloak
exclusivetrue

Cloak
visibletrue
true

Arquivos utilizados no exemplo: