Esse artigo faz parte da revista Java Magazine edição 09. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Pente fino

JSTL – Guia Completo

Parte 3: XML, extensões, IDEs e versões futuras

Neste último artigo da série, analisaremos as taglib XML, o uso da JSTL em tags customizadas e o suporte em IDEs Java, além de mostrar uma prévia das próximas versões

O XML já se firmou como padrão para o intercâmbio de informações entre sistemas. A tecnologia Java tem acompanhado sua evolução, oferecendo em cada nova versão do J2SE e J2EE novas APIs para o processamento e a integração com XML, tais como as APIs JAXP, JAXB e JAX-RPC. Com a JSTL, esse suporte foi estendido, de forma padronizada, ao desenvolvimento de páginas JSP.

Nesse artigo, analisaremos a taglib XML, e veremos como usar os recursos da JSTL em tags customizadas e como tirar proveito da integração com a JSTL oferecida por IDEs Java.  Encerramos com uma visão geral das novidades prometidas para a versão 1.1 e posteriores.

 

XPath

O XPath é uma notação usada para definir e selecionar partes de um documento XML. As tags da taglib XML usam o XPath como uma linguagem de expressões local aos elementos XML. A sintaxe de XPath é bastante rica, e é bem documentada (veja links). A melhor maneira de entender o básico dessa  linguagem é através de exemplos:

·         /resume/header/contact/phone – seleciona todos os elementos com nome phone, que sejam sub-elementos do elemento contact, no cabeçalho (header) do elemento raiz resume;

·         //phone – retorna uma lista com todos os elementos de nome phone no documento (independente da hierarquia);

·         /resume/@id – obtém o atributo id do elemento resume;

·         //resume/@id – retorna todos os atributos id pertencentes a elementos resume;

·         //resume[@id] – retorna todos os elementos resume que possuem o atributo id definido;

·         //resume[@id=”felipeal”] – retorna todos os elementos resume cujo valor de id seja o valor literal "felipeal";

·         //address[state=”SP”] obtém todos os elementos resume que possuam um sub-elemento com nome state, cujo valor seja o literal "SP";

·         count(/resume/job) – retorna a quantidade de elementos job contidos no elemento raiz resume (count é uma das funções definidas pelo XPath);

 

A "ligação" entre variáveis JSTL e expressões XPath é feita por meio dos operadores "$" para variáveis e ":" para propriedades. Por exemplo, a expressão $doc//resume[@id=$param:id] retorna todos os elementos resume, do documento XML referenciado pela variável doc, cujo atributo id tenha o valor passado no parâmetro id no request JSP (lembre-se que param é um dos onze objetos implícitos da EL da JSTL, conforme visto no primeiro artigo da série).

Tags XML

A taglib XML fornece tags para a manipulação de elementos XML, controle de fluxo baseado em expressões XPath (veja o quadro "XPath") e transformações de documentos XML com XSLT. Suas tags de manipulação e controle de fluxo são muito semelhantes às da taglib Core; a principal diferença é que manipulam elementos XML através de expressões XPath, sempre definidas pelo atributo select, enquanto que as tags Core manipulam objetos Java através da EL do JSTL, especificadas em atributos diversos, tais como value, test e items.

Vamos aos detalhes sobre cada tag dessa taglib. Os exemplos se baseiam no documento XML mostrado na Listagem 1, contendo os dados de um Curriculum Vitae fictício – veja também o quadro "Currículos em XML".

– faz o parsing de um documento XML

Nesta tag, o documento a ser “parseado” é definido pelo atributo xml, que pode ser um string ou um java.io.Reader; o resultado é atribuído à variável definida pelos atributos domVar ou var, com escopos especificados nos atributos domScope ou scope, respectivamente. Quando se usa domVar, o tipo da variável é org.w3c.dom.Document; usando-se var, o tipo ficará a cargo da implementação da JSTL. É necessário fazer o parse do documento antes que ele possa ser utilizado na maioria das demais tags do pacote, que irão referenciar a variável definida pelo atributo var ou domVar em suas expressões XPath.

Dois atributos opcionais permitem ajustes no parse. O atributo filter (de tipo org.xml.sax.XMLFilter) define um filtro a ser aplicado – a filtragem é útil quando o documento original for extenso e a aplicação precisar trabalhar apenas com parte dele, ou quando for necessário realizar substituições em alguns elementos ou atributos. No atributo ...

Quer ler esse conteúdo completo? Tenha acesso completo