LibXML2 Análise de Sax ee comercial

Encontrei (o que eu acho que) um comportamento estranho ao usar o analisador de sax e queria saber se é norma

Estou enviando esse XML através do analisador SAX:

<site url="http://example.com/?a=b&amp;b=c"; />

O "&" é convertido em "&" quando ostartElement retorno de chamada é chamado. É suposto fazer isso? Nesse caso, gostaria de entender o porquê.

Eu colei um exemplo demonstrando o problema aqui:

#include <stdlib.h>
#include <libxml/parser.h>

static void start_element(void * ctx, const xmlChar *name, const xmlChar **atts)
{
  int i = 0;
  while(atts[i] != NULL) {
    printf("%s\n", atts[i]);
    i++;
  }
}

int main(int argc, char *argv[]) {
  xmlSAXHandlerPtr handler = calloc(1, sizeof(xmlSAXHandler));
  handler->startElement = start_element;

  char * xml = "<site url=\"http://example.com/?a=b&amp;b=c\" />";

  xmlSAXUserParseMemory( handler,
                          NULL,
                          xml,
                          strlen(xml)
  );
}

PS: Esta mensagem é realmente extraída do Lista LibXML2 ... e não sou o autor inicial deste e-mail, mas notei o problema usando Nokogiri e Aaron (o mantenedor de Nokogiri) postou esta mensagem pessoalment

questionAnswers(2)

yourAnswerToTheQuestion