Árvore de páginas

Atenção

Em build superior a 7.00.121227P há mudança de comportamento na canonicalização do caractere de referência  .

Esta função permite aplicar o algoritmo canonicalization C14N na string que contém um XML.

Sintaxe

XmlC14N( < cXML >, < cOption >, < @cError >, < @cWarning > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cXML

caractere

Indica o conteúdo XML que assumirá a formato canonical.

X

 

cOption

caractere

Reservado para implementação futura. Deve ser informada uma string em branco.

X

 

cError

caractere

Retorna uma descrição de erro, em caso de falha no Parser.

X

X

cWarning

caractere

Retorna uma descrição de advertência emitida pelo Parser.

X

X

Retorno

Nome

Tipo

Descrição

cRetXML

caractere

Retorna o XML recodificado na forma canonical.

Observações

  • Um algoritmo de canonicalization tem o objetivo de aplicar as seguintes regras em um XML:
    • Normalizar quebras de linha
    • Normalizar valores de atributos
    • Trocar seções CDATA pelo seu conteúdo explícito
  • Essa função atende às especificação W3C - World Wide Web Consortium REC-xml-c14n-20010315. Ela aplica a canonicalização na string XML informada como parâmetro em conformidade com a especificação de canonicalização C14N 1.0 (não-exclusiva), removendo comentários.
  • Caso a string XML seja válida, porém o processo de canonicalização não seja completo com sucesso, a função retornará uma string em branco.
  • Caso a string XML informada como parâmetro não seja válida, não seja um XML, caso seja um XML mal-formado, a função retornará uma string em branco e colocará no parâmetro <cErro> a mensagem "Failed to parse XML".
  • Caso a string XML seja vazia, a função retornará uma string em branco e colocará no parâmetro <cErro> a mensagem "Invalid empty document on XmlC14N".

Exemplos

Exemplo 1
User function tstC14N()
  Local cError := ""
  Local cWarning := ""
  Local cXml := MemoRead( "\xml\example.xml" )
  Local cXmlRet := ""
  
  cXmlRet := XmlC14N( cXML , "" , @cError, @cWarning )
  
  if( Len( cXmlRet ) > 0 )
    MemoWrite( "\xml\canonical.xml", cXmlRet )
  else
    conout( "Nao foi possível canonicalizar o XML" )
    varinfo( "cError", cError )
    varinfo( "cWarning", cWarning )
  endif
Return