我有一个更复杂的xml但是要简化
<Canal id="RTP1" posicao="1" tematica="nacional">
<nome>Radio Televisao Portuguesa 1</nome>
<logo>../images/rtp1.jpg</logo>
<Dia id="Antevespera">
<!-- PROGRAMAS -->
<programa designacao="televendas" genero="Entretenimento">
<descricao>Enganar o povo</descricao>
<horario>
<hora_inicio>00:00</hora_inicio>
<duracao>390</duracao>
<hora_fim>06:30</hora_fim>
</horario>
</programa>
<programa designacao="Bom dia Portugal" genero="Informativo">
<descricao>O BOM DIA PORTUGAL é um programa de informação apresentado por João Tomé...</descricao>
<horario>
<hora_inicio> 06:30</hora_inicio>
<duracao>210</duracao>
<hora_fim>10:00</hora_fim>
</horario>
</programa>
<programa designacao="A Praça" genero="Entretenimento">
<descricao>Manhãs divertidas e informativas.</descricao>
<horario>
<hora_inicio>10:00</hora_inicio>
<duracao>132</duracao>
<hora_fim>12:12</hora_fim>
</horario>
</programa>
<programa designacao="A Minha Mãe Cozinha Melhor Que a Tua - Diários" genero="Entretenimento">
<descricao>Numa prova contra o tempo, duas equipas de dois familiares, competem para provar que a
sua receita de família é a melhor..
</descricao>
<horario>
<hora_inicio>12:12</hora_inicio>
<duracao>48</duracao>
<hora_fim>13:00</hora_fim>
</horario>
</programa>
</Dia>
<!-- DIA -->
<Dia id="Vespera">
<!-- PROGRAMAS -->
<programa designacao="troca o paco" genero="Entretenimento">
<descricao>Enganar o povo
</descricao>
<horario>
<hora_inicio>00:00</hora_inicio>
<duracao>390</duracao>
<hora_fim>06:30</hora_fim>
</horario>
</programa>
<programa designacao="Bom dia Portugal" genero="Informativo">
<descricao>O BOM DIA PORTUGAL é um programa de informação apresentado por João Tomé de Carvalho e
Carla Trafaria
</descricao>
<horario>
<hora_inicio>06:30</hora_inicio>
<duracao>0210</duracao>
<hora_fim>10:00</hora_fim>
</horario>
</programa>
</Dia>
</Canal>
</Programacao>
<GeneroProgramas>
<genero>Entretenimento</genero>
<genero>Cultural</genero>
<genero>Informativo </genero>
<genero>Ficcao </genero>
<genero>Desporto</genero>
</GeneroProgramas>
</EPG>
我想输出到图像中的html页面。当你点击已经与xslt交配的按钮时,我想要在rescpective div选项卡中的所有“programa”。 pretended output
我的xsl现在是
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:epg="http://xml.dei.isep.ipp.pt/schema/EPG" xmlns:xls="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<link rel="stylesheet" href="../css/styleCriterios.css"/>
<script type="text/javascript" src="../JS/criterios.js"/>
</head>
<body>
<p>Visualize os programas por genero</p>
<!--criar as tabs -->
<xsl:apply-templates select="epg:EPG/epg:GeneroProgramas"/>
</body>
</html>
</xsl:template>
<!-- templates para genero de programas -->
<xsl:template match="epg:GeneroProgramas">
<div class="tab">
<xsl:for-each select="epg:genero">
<button class="tablinks">
<xsl:attribute name="onClick">
<xsl:text>openType(event, '</xsl:text>
<xsl:value-of select="text()"/>
<xsl:text>')</xsl:text>
</xsl:attribute>
<xsl:value-of select="text()"/>
</button>
</xsl:for-each>
</div>
<xsl:for-each select="epg:genero">
<div class="tabcontent">
<xsl:attribute name="id">
<xsl:value-of select="current()"/>
</xsl:attribute>
<xsl:for-each select="//epg:programa">
<!-- IT HERE WHERE I NEED TO COMPARE AND JUST OUTPUT THE PROGRAMA THAT HAVE IN @DESIGNACAO THE SAME AS epg:genero text() -->
</xsl:for-each>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
所以这就是我的全部,而我的卡住了。在过去的3天里已经有了这个,我必须把它送到星期天23:55到学校。如果有人能帮助我,我会非常感激。
答案 0 :(得分:0)
<xsl:for-each select="epg:genero">
<xsl:variable name="var_genero" select="current()"/>
<div class="tabcontent">
<xsl:attribute name="id">
<xsl:value-of select="current()"/>
</xsl:attribute>
<xsl:for-each select="//epg:Dia">
<xsl:for-each select="epg:programa[@genero=$var_genero][not(.=preceding::*) ] ">
注意下一行是保留我的变量
的地方<xsl:variable name="var_genero" select="current()"/>
然后我用它来比较
<xsl:for-each select="epg:programa[@genero=$var_genero][not(.=preceding::*) ] ">
希望我能帮助别人