2017-05-26 53 views
0

我有一個更復雜的XML,但爲了簡化XSL打印節點正好等於另一節點

<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

好吧,我找到它了。如果有人在這裏需要它是我做到了

<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::*) ] "> 

希望我能幫助某人