Tags principais
1. <xsl:value-of>
Finalidade: extrai o conteúdo de texto de um nó XML especificado e envia o resultado para o documento de saída.
<!-- Obtém diretamente o valor title do primeiro catálogo/cd (sem laço retorna apenas o primeiro registro) -->
<xsl:value-of select="catalog/cd/title" />Code language: HTML, XML (xml)
Quando não combinado com o laço <xsl:for-each>, apenas o primeiro nó correspondente é retornado, não sendo possível percorrer todo o conjunto de dados.
2. <xsl:for-each>
Finalidade: percorre um grupo de nós XML correspondentes, processando vários registros em lote.
<xsl:for-each select="class/student">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>Code language: HTML, XML (xml)
Sintaxe de filtro XPath
Utilize [condição] após o caminho do select para filtrar os nós e aplicar regras de filtragem aos dados
<!-- Retorna apenas os registros cd onde artist é igual a Bob Dylan -->
<xsl:for-each select="catalog/cd[artist='Bob Tom']">Code language: HTML, XML (xml)
Operadores suportados
| Operador | Escrita XPath | Significado |
|---|---|---|
| = | = | Igual a |
| != | != | Diferente de |
| < | < | Menor que (não escreva < diretamente, é obrigatório fazer o escape) |
| > | > | Maior que (não escreva > diretamente, é obrigatório fazer o escape) |
Por exemplo, filtrar CDs com preço inferior a 10
<xsl:for-each select="catalog/cd[price < 10]">Code language: HTML, XML (xml)
Exemplo anterior
student.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
</head>
<body>
<ul>
<!-- Percorre todos os nós student -->
<xsl:for-each select="class/student">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Code language: HTML, XML (xml)
Arquivo XML correspondente (student.xml)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<class>
<student>
<name>Jack</name>
<age>16</age>
</student>
<student>
<name>Jim</name>
<age>12</age>
</student>
</class>Code language: HTML, XML (xml)
Adicionar filtro
Exibir apenas alunos com idade superior a 14 anos
<xsl:for-each select="class/student[age > 14]">
<li><xsl:value-of select="name"/>;<xsl:value-of select="age"/></li>
</xsl:for-each>Code language: HTML, XML (xml)
Laço de repetição
Previous: Ejemplo XSLT
Next: Condição e ordenação