Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese

Pagetitle
XmlSVldSch
XmlSVldSch

Função: XmlSVldSch

Executa

a

validação

de

um

XML

como

string

com

relação

a

um

arquivo

XSD

(Schema).

Sintaxe

Bloco de código
collapsefalse
XmlSVldSch( <
cXML>
 cXML >, <
cSchemaPath>
 cSchemaPath >, <
@cError>
 @cError >, <
@cWarning> ) --> lRet
 @cWarning > )

Parâmetros

 

Nome

Tipo

Descrição

Obrigatório

Referência

cXML

Caracter

caractere

Indica o valor XML como string que será validado, pode ser passado uma variável string com conteúdo XML.

X

 

cSchemaPath

Caracter

caractere

Indica o arquivo XSD com path para validação do arquivo XML.

X

 

cError

Caracter

caractere

Caso ocorra algum erro durante a validação do arquivo XML, a variável será preenchida com a descrição do erro ocorrido.

X

X

cWarning

Caracter

caractere

Caso ocorra algum alerta 'Warning' durante validação do arquivo XML, a variável será preenchida com a descrição do 'Warning' ocorrido.

X

X

Retorno

 

Nome

Tipo

Retorno

Descrição

lRet

(logico)

lógico

Retorna verdadeiro (.T.), se o XML for válido, caso contrário, retorna falso (.F.).

Observações

  • XML - 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 - 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 XmlSVldSch".

 

Importante
  • Função disponível a partir da build 7.00.070910P.
  • Em build superior a 7.00.121227P há correção na validação de alguns casos de schema que importa outro schema em que ocorria um falso negativo.

 

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
  
#INCLUDE "TOTVS.CH"


  #INCLUDE "XMLXFUN.CH"


  User Function ExeXMLSXSD()


  Local cError   := ""


  Local cWarning := ""


  Local cXSD := "\Teste.xsd"


  Local cXml := ""



  //Gera o Objeto XSD


  oXsd := XmlParser( GeraXSD(), "_", @cError, @cWarning )



  // Tranforma o Objeto XSD em arquivo XML


  SAVE oXsd XMLFILE cXsd



  cXml := GeraXML()



  // Valida o arquivo XML com o XSD


  if XmlSVldSch ( cXml, cXSD, @cError, @cWarning )


      Alert ("XML Valido")

else

  else
      Alert ("XML Invalido. Erro: "+ cError+" Warning "+ cWarning)

endif

  endif

  cXml := GeraXMLInvalid()



  // Valida o arquivo XML com o XSD


  if XmlSVldSch ( cXml, cXSD, @cError, @cWarning )


      Alert ("XML Valido")

else

  else
      Alert ("XML Invalido. Erro: "+ cError+" Warning "+ cWarning)

endif

  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
 

Veja também