Executa a validação de um XML como string com relação a um arquivo XSD (Schema).
Sintaxe
XmlSVldSch( < cXML >, < cSchemaPath >, < @cError >, < @cWarning > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cXML | caractere | Indica o valor XML como string que será validado, pode ser passado uma variável string com conteúdo XML. | X |
|
cSchemaPath | caractere | Indica o arquivo XSD com path para validação do arquivo XML. | X |
|
cError | 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 | 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 | Descrição |
---|---|---|
lRet | 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".
Exemplos
#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 Alert ("XML Invalido. Erro: "+ cError+" Warning "+ cWarning) endif cXml := GeraXMLInvalid() // Valida o arquivo XML com o XSD if XmlSVldSch ( cXml, 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
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas