2016-04-06 70 views
0

我想從xml文件包含有關某些電影,所有本週播放的電影的數據,但它打印出我所有的電影..我是新的xmlxslt所以,任何幫助,將不勝感激!我XML樣子:xslt:檢索數據從一個xml文件比較日期

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="movies.xsl"?> 
<?xml-stylesheet type="text/css" href="movies.css"?> 
<movies> 
    <movie> 
     <title> Title1 </title> 
     <actor> Actor1 </actor> 
     <genre> Genre1 </genre> 
     <dateOfPlaying>20160403</dateOfPlaying> 
     <duration> Duration1 </duration> 
    </movie> 
    <movie> 
     <title> Title2 </title> 
     <actor> Actor2 </actor> 
     <genre> Genre2 </genre> 
     <dateOfPlaying>20160420</dateOfPlaying> 
     <duration> Duration2 </duration> 
    </movie> 
    <movie> 
     <title> Title2 </title> 
     <actor> Actor2 </actor> 
     <genre> Genre2 </genre> 
     <dateOfPlaying>20160406</dateOfPlaying> 
     <duration>Duration3</duration> 
    </movie> 
</movies> 

XSL文件:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/"> 
    <html> 
     <body> 
      <h2> Movies report </h2> 
       <table> 
        <xsl:for-each select="movies/movie"> 
         <xsl:if test="number(dateOfPlaying) > 20160401 and number(dateOfPlaying) < 20160408"> 
         <tr> 
          <td> 
           <xsl:value-of select="title"/> 
          </td> 
          <td> 
           <xsl:value-of select="actor"/> 
          </td> 
          <td> 
           <xsl:value-of select="genre"/> 
          </td> 
          <td> 
           <xsl:value-of select="dateOfPlaying"/> 
          </td> 
          <td> 
           <xsl:value-of select="duration"/> 
          </td> 
         <tr> 
         </xsl:if> 
        </xsl:for-each> 
       </table> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

回答

1

你需要這樣的:

<xsl:if test="dateOfPlaying &gt; 20160401 and dateOfPlaying &lt; 20160408">

我也看到你有一個錯誤<tr></xsl:if>將其更正爲</tr>

下面的xsl:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/"> 
    <html> 
     <body> 
      <h2> Movies report </h2> 
       <table> 
        <xsl:for-each select="movies/movie"> 
         <xsl:if test="dateOfPlaying &gt; 20160401 and dateOfPlaying &lt; 20160408"> 
         <tr> 
          <td> 
           <xsl:value-of select="title"/> 
          </td> 
          <td> 
           <xsl:value-of select="actor"/> 
          </td> 
          <td> 
           <xsl:value-of select="genre"/> 
          </td> 
          <td> 
           <xsl:value-of select="dateOfPlaying"/> 
          </td> 
          <td> 
           <xsl:value-of select="duration"/> 
          </td> 
         </tr> 
         </xsl:if> 
        </xsl:for-each> 
       </table> 
      </body> 
    </html> 
</xsl:template> 
</xsl:stylesheet> 

輸出看起來像:

電影報道

標題1 Actor1 Genre1 20160403工期
標題2 Actor2 Genre2 20160406 20160430

+0

我想你的版本但它仍然放在桌子上,所有的電影... – Nelly

+0

我加了th e xsl,你可以試試。也嘗試在xml中評論你的movies.css並看看 - 只是爲了排除這是一個問題與css – SomeDude

+0

是的,你是對的..非常感謝! – Nelly