< Anterior | Próximo >

Lição 3.1: Utilizar Funções XPath e Expressões Complexas

Esta lição descreve como utilizar as funções XPath e outras expressões XPath complexas em suas transformações JET.

Cálculos de atributos derivados complexos

Embora não seja demonstrado neste tutorial, os cálculos de atributos derivados geralmente precisam fazer mais do que apenas concatenar cadeias estáticas com valores que são extraídos do modelo de entrada JET. Essas manipulações em geral podem ser feitas chamando as funções XPath dentro de uma expressão XPath.

Suponha que a mensagem de e-mail gerada era para informar os usuários de que uma conta foi criada para eles utilizando o endereço de e-mail deles como o ID, e uma senha gerada. A senha gerada é a primeira letra do determinado nome mais o sobrenome dele com a senha inteira convertida em letras minúsculas. A mensagem de e-mail gerada deve conter essa senha como um lembrete para os usuários.

O mecanismo JET XPath fornece várias funções que ajudam nessa tarefa. A função de subcadeia retorna uma parte de uma cadeia, a função concatenar concatena duas ou mais cadeias, enquanto a função de minúscula gerencia a conversão de letras maiúsculas e minúsculas. O seguinte fragmento de código mostra o cálculo do atributo derivado hipotético para a senha no elemento de correio:

{lower-case(concat(substring($mailing/@firstName,1,1), $mailing/@lastName))}

O JET inclui a maioria das funções XPath 1.0 conforme definido nas especificações do XPath 1.0 Biblioteca de Funções Principais. Apenas duas funções não são implementadas: lang e id. O JET também fornece várias funções XPath adicionais.

Filtrando expressões de caminho XPath

Em alguns casos, é recomendável que você processe um subconjunto de elementos com base em um critério específico, o qual é a função dos predicados do XPath. Um predicado é uma expressão que é aplicada a uma etapa em um expressão XPath que filtra elementos que são correspondidos pela etapa. Um predicado pode ser uma expressão Booleana ou uma expressão inteira, caso em que ele é tratado como um índice de base um no conjunto de elementos. Os predicados são colocados entre colchetes ([]).

Os exemplos a seguir tornam esse conceito mais concreto. A tag <c:iterate> processa somente elementos de correio que contenham um elemento de interesse:

<c:iterate select="$campaign/mailing[interest]" var="mailing">

O XPath converte o resultado do interesse da expressão do predicado em um valor Booleano testando a cardinalidade do conjunto de nós correspondentes. A expressão equivale ao seguinte exemplo:

<c:iterate select="$campaign/mailing[count(interest) > 0]" var="mailing">

A tag <c:iterate> a seguir processa elementos de correio que tenham RAD como primeiro interesse.

<c:iterate select="$campaign/mailing[interest[1]/@code = 'RAD']" var="mailing">

Ponto de Verificação da Lição

Esta lição abordou casos em que funções XPath ou expressões XPath mais complexas podem ser úteis na criação de transformações JET.

Feedback