Laço de repetição

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

OperadorEscrita XPathSignificado
==Igual a
!=!=Diferente de
<&lt;Menor que (não escreva < diretamente, é obrigatório fazer o escape)
>&gt;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 &lt; 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 &gt; 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

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *