xslt tutorial xslt transformations elements with examples
Este tutorial explica o que é XSLT, suas transformações, elementos e uso com exemplo. Também cobre a importância do XPath para desenvolver o código de conversão XSLT:
O termo 'XSLT' é gerado pela combinação de duas palavras, ou seja, ‘XSL’ e ‘T’, ‘XSL’ é a forma abreviada de ‘Extensible Stylesheet Language’ e ‘T’ é uma forma abreviada de ‘Transformation’.
Então, basicamente, XSLT é uma linguagem de transformação que é usada para transformar / converter documentos XML de origem em documentos XML ou em outros formatos como HTML, PDF usando XSL-FO (Formatting Objects), etc.
O que você aprenderá:
Introdução ao XSLT
A transformação acontece com a ajuda do processador XSLT (como Saxon, Xalan). Este processador XSLT pega um ou mais documentos XML como fonte com um arquivo XSLT que contém código XSLT escrito nele e os documentos de resultado / saída serão gerados posteriormente, conforme mostrado no diagrama abaixo.
O processador XSLT analisa os documentos XML de origem usando o X-Path para navegar por diferentes elementos de origem, começando do elemento raiz até o final dos documentos.
Leitura Recomendada => Tudo o que você precisa saber sobre X-Path
Transformação XSLT
Para iniciar a transformação, precisamos de um documento XML no qual o código XSLT será executado, o próprio arquivo de código XSLT e a ferramenta ou software com processador XSLT (você pode usar qualquer versão gratuita ou versão de teste do software para fins de aprendizagem).
# 1) Código XML
Abaixo está o código XML de origem no qual o código XSLT será executado.
Nome do arquivo: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Código XSLT
Abaixo está o código XSLT baseado no qual será executado no documento XML acima.
Nome do arquivo: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Código de Resultado / Saída
O código abaixo será produzido após usar o código XSLT no documento XML acima.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Exibir resultado / saída no navegador da web
Livros:
ID do livro | Nome do livro | Nome do autor | Editor | Preço | Edição |
---|---|---|---|---|---|
5350192956 | Referência do programador XSLT | Michael Kay | Wrox | $ 40 | 4º |
3741122298 | Use o Java primeiro | Kathy Sierra | O'reilly | $ 19 | 1ª |
9987436700 | SQL A Referência Completa | James R. Groff | McGraw-Hill | $ 45 | 3ª |
Elementos XSLT
Para entender o código XSLT acima e ele está funcionando, primeiro precisamos entender os diferentes elementos XSLT e seus atributos.
# 1) OU
Cada código XSLT deve começar com o elemento raiz ou
Atributos:
- @xmlns: xsl: Conecta o documento XSLT com o padrão XSLT.
- @versão: Define a versão do código XSLT para o analisador.
#dois)
Essa declaração define um conjunto de regras aplicadas para processar ou transformar o elemento de entrada selecionado do documento de origem nas regras de elemento de destino definidas dos documentos de saída.
Basicamente, dois tipos de modelos estão disponíveis de acordo com seus atributos:
(i) Modelo Nomeado: Quando o elemento xsl: template contém o atributo @name, ele é chamado de Template Nomeado.
Os modelos nomeados são chamados pelo elemento xsl: call-template.
(ii) Modelo de correspondência: O elemento xsl: template contém o atributo @match que contém um padrão correspondente ou XPath aplicado aos nós de entrada.
Os modelos de correspondência são chamados pelo elemento xsl: apply-template.
O elemento xsl: template deve ter o atributo @ match ou o atributo @name ou ambos. Um elemento xsl: template que não possui atributo match deve ter nenhum atributo mode e nenhum atributo priority.
Vamos reescrever o XSLT acima (
para) Código XSLT baseado em Match Template com. Veja abaixo o código alterado destacado em amarelo e cinza, ele produzirá o mesmo resultado de saída acima.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Consulte a captura de tela para a área destacada:
b) Código XSLT baseado no modelo nomeado com. Veja abaixo o código alterado destacado em amarelo e cinza, ele produzirá o mesmo resultado de saída acima.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Consulte a captura de tela para a área destacada:
# 3)
O processador encontrará e aplicará todos os modelos que possuem XPath definido no atributo @select.
O atributo @mode também é usado se quisermos fornecer mais de uma forma de saída com o mesmo conteúdo de entrada.
# 4)
O processador fará uma chamada aos templates com valor dentro do atributo @name (obrigatório).
elemento é usado para passar parâmetros para o modelo.
suporte técnico perguntas e respostas da entrevista pdf
# 5)
Forneça o valor de string / texto referente à expressão XPath definida no atributo @select, conforme definido no código acima.
Isso fornecerá o valor do nome do livro.
# 6): Repetição
Isso processará as instruções para cada conjunto de nós (xpath definido no atributo @select (obrigatório)) na sequência classificada.
O código acima significa para cada conjunto de nós de meios de armazenamento / livro:
/ store / book (1)
/ store / book (2)
/ store / book (3)
também pode ser usado como filho de xsl: for-each para definir a ordem de classificação.
# 7): Processamento Condicional
As instruções xsl: if só serão processadas se o valor booleano do atributo @test for verdadeiro, caso contrário, a instrução não será avaliada e a sequência vazia será retornada.
2'> Condition True: Count of books are more than two.
Resultado: Condição verdadeira: a contagem de livros é mais de dois.
Aqui, o count () é a função predefinida.
# 8): Processamento de condições alternativas
xsl: choose tem vários casos para diferentes condições que são testadas dentro do atributo @test dos elementos xsl: when, a condição de teste que se torna verdadeira primeiro entre todos os xsl: when, que será processada primeiro e há um xls: caso contrário opcional elemento de forma que se nenhum dos testes de condição se tornar verdadeiro, este xsl: caso contrário, será considerado.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Resultado: Condição verdadeira: a contagem do livro é três.
# 9)
xsl: copy funciona no item de contexto, ou seja, se for um nó, ele copiará o nó de contexto para o nó recém-gerado e não copiará os filhos do nó de contexto. Por esse motivo, isso é chamado de cópia superficial. Ao contrário do elemento xsl: copy-of, o xsl: copy não tem o atributo @ select.
No código a seguir, os itens de contexto são copiados para a saída e todos os itens filhos são chamados e copiados pelo xsl: apply-template recursivamente.
node () | @ * Representa todos os nós e todos os seus atributos recursivamente.
Resultado: Isso copiará todos os nós e atributos do documento de origem recursivamente para o documento de saída, ou seja, criará uma cópia exata do documento de origem.
# 10)
xsl: copy-of irá copiar a sequência de nós com todos os seus filhos e atributos recursivamente por padrão, devido a essa natureza, isso também é chamado de cópia profunda. O atributo @select é necessário para a avaliação do XPath.
Resultado: Isso copiará todos os nós e atributos do documento de origem recursivamente para o documento de saída, ou seja, criará uma cópia exata do documento de origem.
Significa uma cópia do nó atual e do atributo atual.
#onze)
Este elemento é usado para escrever um comentário para o resultado alvo, qualquer conteúdo de texto que esteja ao lado desta tag será impresso como uma saída comentada.
Isso será impresso como um nó de comentário.
Resultado:
# 12)
Isso irá gerar um nó de texto para o documento de resultado, o valor dentro de xsl: text será impresso como uma string de saída.
Isto é um
linha de texto.
Resultado:
Isto é um
linha de texto.
# 13)
Isso irá gerar um elemento para o documento de resultado com o nome mencionado em seu atributo @name. O atributo name é o atributo obrigatório.
Resultado: 5350192956
# 14)
Isso irá gerar um atributo para seu elemento pai no documento de resultado. O nome do atributo é definido pelo atributo name e o valor do atributo é calculado pelo XPath mencionado no atributo select conforme fornecido no código abaixo. O atributo name é o atributo obrigatório.
Resultado:
#quinze)
Este elemento irá classificar o nó selecionado em uma forma de sequência de acordo na direção ascendente ou descendente. O nó ou XPath é fornecido por meio do atributo @select e a direção da classificação é definida pelo atributo @order.
No código a seguir obteremos a lista de todos os livros de acordo com o nome do livro em ordem alfabética.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Consulte esta captura de tela para a área destacada:
Resultado: A lista abaixo contém os nomes dos livros em ordem alfabética, ou seja, em ordem crescente.
Livros:
ID do livro | Nome do livro | Nome do autor | Editor | Preço | Edição |
---|---|---|---|---|---|
3741122298 | Use o Java primeiro | Kathy Sierra | O'reilly | $ 19 | 1ª |
9987436700 | SQL A Referência Completa | James R. Groff | McGraw-Hill | $ 45 | 3ª |
5350192956 | Referência do programador XSLT | Michael Kay | Wrox | $ 40 | 4º |
# 16)
Este elemento declara uma variável que contém um valor. Uma variável pode ser uma variável global ou uma variável local. O nome da variável é definido pelo atributo @name e o valor que esta variável irá armazenar é definido pelo atributo @select.
O acesso da variável global é global, ou seja, as variáveis podem ser chamadas em qualquer elemento e permanecem acessíveis na folha de estilo.
Para definir uma variável global, só precisamos declarar que ao lado do elemento raiz da folha de estilo, conforme mostrado no código abaixo em destaque amarelo, a variável ‘SecondBook’ é a variável global e contém o nome do segundo livro.
O acesso da variável local é local para o elemento em que está definida, ou seja, essa variável não seria acessível fora do elemento em que é definida como mostrado no código abaixo que está destacado em cinza, a variável 'primeiro livro' é um variável local e contém o nome do primeiro livro.
Para fazer uma chamada da variável global à variável local, o símbolo do dólar ($) é usado antes do nome da variável, conforme mostrado abaixo em amarelo destacado $ .
First Book Name: Second Book Name:
Consulte a captura de tela para a área destacada:
Resultado:
Nome do primeiro livro: Referência do programador XSLT
Nome do segundo livro: Head First Java
# 17)
Este elemento é usado para declarar chaves, para os valores padrão correspondentes a essa chave específica.
O nome é um provedor dessa chave pelo atributo @name (“ get-publisher “), Que é usado posteriormente dentro da função key (). O atributo @match é fornecido para indexar o nó de entrada por expressões XPath (“ livro “), Como no exemplo abaixo, @match realçado em amarelo é usado para indexar todos os livros disponíveis na loja.
Em relação ao atributo @match, o atributo @use é usado, ele declara o nó para obter o valor para aquela chave por meio da expressão XPath (“editor”).
Agora, suponha que se precisássemos dos detalhes do livro publicado apenas pela editora ‘Wrox’, podemos obter esse valor facilmente por meio do elemento xsl: key fazendo um par de valor-chave.
chave (‘get-publisher’, ‘Wrox’) Key () tem dois parâmetros, o primeiro é o nome da chave, que neste caso é ‘get-publisher’, o segundo é o valor da string que precisa ser pesquisada, que em nosso caso é ‘Wrox’.
melhor site para assistir anime de graça
Books:-
Book ID Book Name Author Name Publisher Price Edition
Consulte a captura de tela para a área destacada:
Resultado:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Resultado / Visualização HTML:
Livros:
ID do livro | Nome do livro | Nome do autor | Editor | Preço | Edição |
---|---|---|---|---|---|
5350192956 | Referência do programador XSLT | Michael Kay | Wrox | $ 40 | 4º |
# 18)
Este elemento é usado para fins de depuração no desenvolvimento de XSLT. O elemento fornece sua saída para a tela de saída padrão do aplicativo.
O atributo @terminate é usado com dois valores 'sim' ou 'não', se o valor for definido como 'sim', o analisador termina imediatamente assim que a condição de teste for satisfeita para que a mensagem seja executada.
Para entender isso, vamos supor que se em nosso documento de entrada o elemento de preço esvaziar acidentalmente, como no código abaixo, o processamento deve parar imediatamente assim que o processador encontrar o elemento de preço vazio, que pode ser facilmente alcançado usando xsl: mensagem dentro da condição de teste if, como no código XSLT abaixo.
O alerta do depurador é mostrado pela tela padrão do aplicativo: Processamento encerrado por xsl: mensagem na linha 21.
Código XML de entrada:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Consulte a captura de tela para a área destacada:
Código XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Consulte a captura de tela para a área destacada:
Resultado: Observe que, assim que o analisador encontra a etiqueta de preço vazia, ele imediatamente termina o processamento por causa da qual as etiquetas de fechamento de, e não viria no final do arquivo.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Consulte a captura de tela para a área destacada:

# 19) e
elemento define o parâmetro para o modelo se definido dentro. Ele pode ser definido dentro como o parâmetro global ou dentro como o parâmetro local para esse modelo.
O valor de é passado / fornecido quando o modelo é chamado por ou.

ele passa o valor do parâmetro definido dentro do template. Atributo como @name contém o nome do parâmetro que deve corresponder ao atributo @name do elemento. O atributo @Select é usado para definir um valor para esse parâmetro.

como usar assert em c ++
Para buscar o valor do parâmetro igual a um cifrão variável ($) é usado.

Código XML fonte:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Código XSLT:
List of Books Name :-
Book Name:
Consulte a captura de tela para a área destacada:

Saída do resultado:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference