Hoje em dia está cada vez mais comum o uso de XML dentro de sistemas, como o principal objetivo de integrá-los. Uma destas formas é usando o XSLT, que é uma linguagem de transformação, que faz com que o documento de XML seja processado e exibido em formato de uma página de HTML. Para usar esta ferramenta, é necessário ter conhecimentos prévios em XML, XSLT e alguns conhecimentos em JavaScript. O Google Ajaxslt é compatível com Firefox (a partir de 1.0), Internet Explorer (a partir de 6.0), Safari (a partir de 1.2) e Opera (a partir de 7.5). É uma ferramenta bastante leve e usual, tendo a desvantagem de não haver a documentação oficial. Neste primeiro tópico sobre o assunto, vamos executar a transformação com XSLT com o API Google Ajaxslt.
Para iniciar, a lista de scripts do API da página que vai ser executada, tem de seguir exatamente esta ordem, do contrário, gerará erros, inviabilizando o funcionamento da ferramenta, conforme o código abaixo:
<script language="javascript" src="ajaxslt/xmltoken.js" type="text/javascript"></script>
<script language="javascript" src="ajaxslt/dom.js" type="text/javascript"></script>
<script language="javascript" src="ajaxslt/util.js" type="text/javascript"></script>
<script language="javascript" src="ajaxslt/xpath.js" type="text/javascript"></script>
<script language="javascript" src="ajaxslt/xslt.js" type="text/javascript"></script>
<script language="javascript" src="src/meuscript.js" type="text/javascript"></script>
Em arquivo “meu script”, poderemos agora criar dois objetos do tipo XMLHttpRequest, no caso do Firefox ou o Active X, se for o Interner Explorer, como 0 “Msxml2.DOMDocument.4.0”, por exemplo para que sejam retornados o XMLDocument. Se for usar o objeto no primeiro caso, basta retornar com o responseXML. No caso do internet Explorer, que usa o ActiveX, o objeto retorna uma string representando o conteúdo do XML, o que não é válido. Para isso, usa-se a função xmlParse(http_request.xml) do próprio API do Google, onde o http_request.xml, é a string que representa o conteúdo do XML. Vale lembrar que o Internet Explorer 7, embora carregue o XMLHttpRequest, o responseXML não funciona corretamente (considerado um bug do Browser). Para contornar este bug, você deve usar o seguinte código.
if (window.XMLHttpRequest && navigator.appName != "Microsoft Internet Explorer")
{
//Comandos para chamar o XmlDocument via XMLHttpRequest
}
else if (window.ActiveXObject)
{
//Comandos para chamar o XmlDocument via ActiveX
}
Inserindo esta condição com navigator.appName, você estará forçando o Internet Explorer 7 a usar o ActiveX e com isso, usar a função xmlParse do Google Ajaxslt. Em seguida, você, pode selecionar o elemento para renderizar ou até mesmo usar o document.write com o conteúdo do elemento virtual. Neste exemplo, vamos utilizar o elemento (DIV, SPAN, etc) para processar o arquivo XSL. Basta apenas isso:
var myNode = document.getElementById("myId");
xsltProcessContext(new ExprContext(myXml), myXsl, myNode);
Onde o myId é o id do elemento como DIV, SPAN ou outro tipo de elemento que queira usar como objeto de renderização. O objeto ExprContext do API Google Ajaxslt é necessário para criar um contexto, que é o Document Fragment mais outras atribuições como os parâmetros de XSLT, que veremos em outro tópico sobre o assunto. O myXml, na verdade é o XmlDocument, gerado pelo XMLHttpRequest ou pelo ActiveX do Internet Explorer, porém, no segundo caso, terá que parsear a string do XML. O myXsl também é o XmlDocument, só que ao invés do XML que são os dados, é o próprio documento XSLT, usando a mesma função que chama o documento de XML.
Este é o primeiro exemplo sobre o Google Ajaxslt. Mandarei mais outras ultilidades sobre o API, como a tranformação do XSLT com parâmetros e também a navegação de Xpath, para fazer consultas. Qualquer dúvidas ou esclarecimentos, pode fazer nos comentários.