如果在xsl中params为空,如何显示所有项目?

时间:2014-07-04 14:37:04

标签: html xml xslt

我需要选择cd base所有带有参数年份和艺术家的cd,如果已经设置,但如果没有 - 我需要显示所有的CD' s。我知道我可以设置*符号来显示所有但我试图这样做

<xsl:param name="year" select="*" >
<xsl:param name="artist" select="*" />

如果没有设置参数,它就不起作用,它什么都没有显示。

<xsl:for-each select="cd">
  <xsl:sort select="*[name()=$sortBy]" order="{$order}" />
   <xsl:if test="year = $year">
    <xsl:if test="artist = $artist">
      <tr>
        <td><xsl:value-of select="artist"/></td>
        <td><xsl:value-of select="album"/></td>
        <td><xsl:value-of select="year"/></td>
        <td><xsl:value-of select="studio"/></td>
        <td width="100px" height="100px"><xsl:apply-templates select="link"/></td>
      </tr>
     </xsl:if>
    </xsl:if>
  </xsl:for-each>

1 个答案:

答案 0 :(得分:0)

使用XSLT 1.0,通常的方法是使用

将默认值定义为空字符串
<xsl:param name="artist" select="''"/>
<xsl:param name="year" select="''"/>

然后在你使用的谓词中。

<xsl:for-each select="cd[(not($artist) or $artist = artist) and (not($year) or $year = year)]">...</xsl:for-each>