经典的ASP xsl日期转换

经典的ASP xsl日期转换

问题描述:

我有下面的代码读取到我的页面rss饲料,但我希望pubDate转换成更人类可读的日期,如果所有可能的。经典的ASP xsl日期转换

<?xml version="1.0" encoding="iso-8859-1"?><!-- DWXMLSource="mm_news.xml" --> 
    <!DOCTYPE xsl:stylesheet]> 
    <xsl:output method="html" encoding="iso-8859-1"/> 
    <xsl:template match="/"> 
    <p class="newsList-date"><xsl:value-of select="pubDate"/></p>........ 

这给了我:

Fri, 9 Sept 2011 15:21:36 GMT 

但想读的东西像

Friday 9 Sept 2011 

即使很高兴,如果我可以简单地剪掉年底才有“周五,9 2011年9月'

此外,如果更容易,我可以在XML中添加一个额外的部分,所以我可以简单地输入日期我想要它,所以我可以读它,像下面的东西? (XML是手写不是动态创建的)

<?xml version="1.0" encoding="US-ASCII" ?> 
    <?xml-stylesheet title="XSL_formatting" type="text/xsl" href="direct.xsl"?> 
    <rss version="2.0"> 
    <channel>.... 

    <item>.... 
    <title>..... 
    <description>.... 
    <thedate>..... 

非常感谢

+0

你为什么使用xsl-fo标签? – AnthonyWJones

+0

whast xsl-fo标签?对不起 –

好了,快&肮脏的方式将取代select="pubDate"像这样的表达式:

select="substring(pubDate,1,16)" 

,一个人的然而依赖于四个月的字母,只会给你''2011年9月9日星期五'的'后备'结果。

如果有必要,你可以是一个有点聪明,并通过使用这种表达删除月份是四个字母(这似乎不太可能为5月)要求:

select="substring(pubDate,1,string-length(substring-before(pubDate,':'))-3)" 

而不是采取一个固定长度16,它基于第一个:(在该时间),并从中减去3。

如果你真正想要的,有一个单行的表达,可以给你你想要的东西,但它是一个有点令人费解:

select="concat(normalize-space(substring('Monday Tuesday WednesdayThursday Friday Saturday Sunday ',string-length(substring-before('MonTueWedThuFriSatSun',substring(pubDate,1,3))) * 3 + 1,9)),substring(pubDate,5,string-length(substring-before(pubDate,':'))-7))" 

这将使用“查找”,发现那里的一天星期存在于一个字符串中,并使用它从另一个字符串中选择全名,最后使用'normalize-space'来修剪任何额外的空格。然后它将它与日期部分连接起来。

+0

感谢您为此我有一个类似的第一次使用替换和删除时间和日期,但看着你的,特别是第二个它运作良好,谢谢 –