如何在xsl中添加jquery函数(Date)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在xsl中添加jquery函数(Date)相关的知识,希望对你有一定的参考价值。

我得到日期作为字符串,需要以这样的格式显示日期:MM / DD / YYYY如果只有一年我应该添加01/01。我还需要用大胆的方式显示今天2年以上的专辑。我该怎么做呢?如何添加功能?我只能使用JQUERY而不能使用JS。谢谢。

这是我的xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:ms="urn:schemas-microsoft-com:xslt"
      xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <xsl:template match="/">
<html> 
<body>
<style>
u { 
    text-decoration: underline;
    font-weight: bold;
}
</style>
  <table border="1">
    <tr bgcolor="#979994">
      <th style="text-align:left">Price</th>
      <th style="text-align:left">Link</th>
      <th style="text-align:left">Company</th>
      <th style="text-align:left">Name</th>
      <th style="text-align:left">Date</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="Albums/Album">
    <tr>
      <td><xsl:value-of select="Price"/></td>
      <td><xsl:value-of select="Link"/></td>
      <td><xsl:value-of select="Company"/></td>
      <td><xsl:value-of select="Name"/></td>
      <td><xsl:value-of select="Date" /></td>
      <td style="color:red;"><xsl:value-of select="Artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

和xml:

<?xml version="1.0" encoding="ISO8859-1"?>
<?xml-stylesheet type="text/xsl" href="Albums1.xs"?>
<Albums>
    <Album>
        <Name>Empire Burlesque</Name>
        <Artist>Bob Dylan</Artist>
        <Country>USA</Country>
        <Company>Columbia</Company>
        <Date>19880610</Date>
    </Album>
    <Album>
        <Name>Hide your heart</Name>
        <Artist>Bonnie Tylor</Artist>
        <Country>UK</Country>
        <Company>CBS Records</Company>
        <Price>9.90</Price>
        <Date>19880509</Date>
    </Album>
    <Album>
        <Name>Greatest Hits</Name>
        <Artist>Dolly Parton</Artist>
        <Country>USA</Country>
        <Company>RCA</Company>
        <Price>9.90</Price>
        <Date>1982</Date>
    </Album>
    <Album>
        <Name>Still got the blues</Name>
        <Artist>Gary More</Artist>
        <Country>UK</Country>
        <Company>Virgin redords</Company>
        <Price>10.20</Price>
        <Date>1990</Date>
    </Album>
    <Album>
        <Name>Eros</Name>
        <Artist>Eros Ramazzotti</Artist>
        <Country>EU</Country>
        <Company>BMG</Company>
        <Price>9.90</Price>
        <Date>1997</Date>
    </Album>
    <Album>
        <Name>25</Name>
        <Artist>Adele</Artist>
        <Country>UK</Country>
        <Company>XL Recordings</Company>
        <Price>9.90</Price>
        <Date>20151120</Date>
    </Album>
    <Album>
        <Name>1000 Forms of Fear</Name>
        <Artist>Sia</Artist>
        <Country>USA</Country>
        <Company>RCA Records</Company>
        <Price>9.90</Price>
        <Date>20140704</Date>
    </Album>
    <Album>
        <Name>Rattle and Hum</Name>
        <Artist>U2</Artist>
        <Country>EU</Country>
        <Company>Island</Company>
        <Price>9.90</Price>
        <Date>19881010</Date>
    </Album>
</Albums>
答案

虽然可以在XSLT中调用javascript函数,但它依赖于处理器。但是,你根本不需要javascript。这种简单的格式是XSLT可以直接处理的。

而不是这样做......

<td><xsl:value-of select="Date" /></td>

做这个....

  <td>
    <xsl:choose>
      <xsl:when test="string-length(Date) = 4">
        <xsl:text>01/01/</xsl:text>
        <xsl:value-of select="Date" />
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="substring(Date, 7, 2)" />
        <xsl:text>/</xsl:text>
        <xsl:value-of select="substring(Date, 5, 2)" />
        <xsl:text>/</xsl:text>
        <xsl:value-of select="substring(Date, 1, 4)" />
      </xsl:otherwise>
    </xsl:choose>
  </td>

或许这......

  <td>
    <xsl:choose>
      <xsl:when test="string-length(Date) = 4">
        <xsl:value-of select="concat('01/01/', Date)" />
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="concat(substring(Date, 7, 2), '/', substring(Date, 5, 2), '/', substring(Date, 1, 4))" />
      </xsl:otherwise>
    </xsl:choose>
  </td>

以上是关于如何在xsl中添加jquery函数(Date)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jquery Date Picker 中添加请选择月份年份下拉菜单的选项?

[C#]在 XMLDocument 中添加 XSL 引用

jQuery 选择器转义冒号“:”在 IE 中有效,但在其他地方无效

使用 XSL-FO 在 PDF 中添加换行符?

求教大神,js或者jquery中如何把对象转成数值

在 XSL 中定义 PHP-Function 并调用它。可能的?如何?