---
title: "Mapeamento de dados com funções matemáticas XSLT3"
date: "2021-04-14"
categories: 
  - "data-integration"
  - "xpath"
  - "xquery"
tags: 
  - "data-mapping"
  - "mapforce"
  - "xml-data-mapping"
  - "xslt3"
description: Explore como o XSLT3 melhora o mapeamento de dados XML com funções matemáticas avançadas, incluindo trigonometria, para resolver desafios complexos de integração utilizando o MapForce.
---
Status: #blog

Tags:  #data-mapping #mapforce #xml-data-mapping #xslt3

Categories: [data-integration](/blog/pt/category/data-integration.md) | [xpath+xquery](/blog/pt/category/xpathxquery.md) | [xpath+xquery](/blog/pt/category/xpathxquery.md)
# Mapeamento de dados com funções matemáticas XSLT3

O XSLT3 adiciona funções trigonométricas e outras funções matemáticas avançadas, novas funções de formatação, funções para recolher variáveis de ambiente, e muito mais, expandindo os padrões de transformação XML XSLT e XSLT2. Analistas de dados e outros profissionais da área podem utilizar as funções do XSLT3 [para resolver desafios relacionados ao mapeamento e à integração de dados XML](https://www.altova.com/pt/mapforce) que exigem cálculos matemáticos complexos. Vamos analisar alguns exemplos do MapForce [Mapeamento de dados com XSLT3](https://www.altova.com/pt/xslt-3#mapforce) funções matemáticas que utilizam trigonometria e outras expressões matemáticas complexas.

![](/blog/images/shutterstock_248233801.jpg)

<!--more-->

O MapForce oferece motores de processamento internos, personalizados para diferentes tipos de dados e aplicações.

[![Selecionar o motor de processamento para o mapeamento de dados com XSLT3](/blog/images/processing-engine.png)](processing-engine.png)

Quando seleciona o motor XSLT3, as funções apresentadas abaixo são adicionadas à janela da Biblioteca de Funções e ficam disponíveis para o mapeamento de dados

[![Funções XQuery para mapeamento de dados com XSLT3](/blog/images/xslt3-functions.png)](xslt3-functions.png)

Por exemplo, podemos criar um mapeamento de dados que gere funções seno, cosseno e tangente para valores de entrada armazenados num ficheiro XML. A lista original foi fornecida num ficheiro CSV, que importámos para o XMLSpy, o software mais vendido a nível mundial [Editor de JSON e XML](https://www.altova.com/pt/xmlspy-xml-editor), para conversão para formato XML.

Começamos a criação do mapeamento no MapForce importando os esquemas XML para os ficheiros de entrada e saída, e depois conectando os elementos raiz. Neste ponto, é importante selecionar o tipo de conexão "orientado ao destino" padrão. Isto permite-nos personalizar cada conexão subsequente.

[![Conexão de elementos orientada a objetivos para um mapeamento de dados personalizado](/blog/images/data-mapping-1-3.png)](data-mapping-1-3.png)

Em seguida, conectamos os elementos "Row", arrastamos as funções trigonométricas da biblioteca e conectamos o elemento "xvalue" da fonte a cada função e a cada elemento de saída. Aqui está o mapeamento de dados completo:

[![Gerar valores de seno, cosseno e tangente para os dados de entrada](/blog/images/data-mapping-2-3.png)](data-mapping-2-3.png)

Ao clicar no botão "Saída" localizado abaixo do painel de mapeamento, o ficheiro de entrada é processado, o resultado é gerado e a janela de visualização é aberta.

[![Ficheiro XML de saída que contém os valores de seno, cosseno e tangente](/blog/images/output-1-1.png)](output-1-1.png)

Neste exemplo, os valores de entrada variam de zero a 15, em incrementos de décimos, e a saída contém o seno, o cosseno e a tangente correspondentes a cada valor. Podemos guardar o ficheiro e abri-lo no XMLSpy, para aproveitar a visualização em grade do XMLSpy, criar um gráfico altamente personalizado e, até mesmo, exportar o gráfico para o incluir num relatório ou apresentação

[![Visualização do ficheiro de saída no formato XML, utilizando a grelha do XMLSpy, com um gráfico gerado](/blog/images/sin-cos-graph.png)](sin-cos-graph.png)

**Mapeamento de dados com XSLT3 para a criação de expressões complexas**

Pode combinar as funções XSLT3 com outras funções da biblioteca para criar expressões complexas. Por exemplo, digamos que queremos aplicar uma equação quadrática como y = 4x² – 3 a uma lista de valores de entrada. Podemos criar um mapeamento que combine a função `pow` do XSLT3 (para a exponenciação) com as funções básicas da biblioteca para multiplicação e adição.

[![Construir uma expressão quadrática para mapeamento de dados com XSLT3](/blog/images/quadratic-mapping-1.png)](quadratic-mapping-1.png)

Note que a sequência de funções na correspondência define explicitamente a ordem de processamento implícita na expressão: primeiro a exponenciação, depois a multiplicação e, por fim, a subtração. Se a expressão utilizasse parênteses para alterar a ordem de processamento padrão, modificaríamos a sequência de funções na correspondência para definir a ordem de processamento desejada.

Talvez queiramos aplicar um conjunto de valores de entrada a várias variações da expressão e comparar os resultados. Podemos criar uma função para o utilizador que descreva a expressão, e podemos modificar a estrutura do ficheiro de saída para registar o expoente, o multiplicador e o modificador utilizados para gerar cada ficheiro de saída.

Aqui está a estrutura desejada para cada ficheiro de saída gerado pelas diferentes versões da expressão:

[![Estrutura de dados desejada para o ficheiro de resultados da expressão quadrática](/blog/images/result-structure.png)](result-structure.png)

A função definida pelo utilizador receberá os valores de 'x' a partir do ficheiro XML de entrada, calculará a expressão e também transmitirá os parâmetros da função para serem registados na saída.

[![A expressão quadrática como uma função definida pelo utilizador](/blog/images/user-function-1.png)](user-function-1.png)

Aqui está o mapeamento completo, com a expressão utilizada numa função do utilizador:

[![A correspondência de dados utilizando a função definida pelo utilizador para a expressão quadrática](/blog/images/quadratic-mapping-2.png)](quadratic-mapping-2.png)

 E o ficheiro de saída gerado:

[![Uma visão parcial do mapeamento de dados utilizando XSLT3 para a expressão quadrática](/blog/images/output-2-2.png)](output-2-2.png)

Uma função de utilizador pode ser facilmente inserida noutras mapeações ou partilhada entre vários utilizadores do MapForce. Para criar uma função de utilizador, começamos por selecionar as funções que definem a expressão e, em seguida, clicamos no menu principal "Função":

[![Criar uma função de utilizador a partir de componentes existentes num mapeamento](/blog/images/build-user.png)](build-user.png)

Aqui está a nossa definição final da função do utilizador:

[![Definição da função do utilizador para a expressão quadrática no mapeamento de dados com XSLT3](/blog/images/user-function-definition-1.png)](user-function-definition-1.png)

Se o seu projeto de mapeamento e integração de dados requer o mapeamento de dados com XSLT3, fortrigonometry ou outras funções avançadas de XSLT3, consulte o MapForce, a ferramenta gráfica de mapeamento de dados, vencedora de prémios, para qualquer tipo de conversão e integração de dados. Descarregue uma versão de avaliação gratuita do [MapForce](https://www.altova.com/pt/mapforce/download), que inclui tutoriais, ajuda e muitos exemplos!
