빠른 답장을 보내 주셔서 감사합니다. 나를 올바른 방향으로 가야 해. 그것을 해결할 관리! 유용한 링크를 찾았습니다
나는 XSLT 버전 2.0을 사용하고있었습니다. 변수를 사용하여 MMM 월을 대체하고 날짜를 하위 문자열로 묶는 경우입니다.
솔루션
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="Months" select="'Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec'"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="channel">
<xsl:copy>
<xsl:apply-templates select="@*|node()[not(preceding-sibling::item) and not(self::item)]"/>
<xsl:apply-templates select="item">
<!-- year -->
<xsl:sort select="substring(pubDate, 13, 4)" order="descending" data-type="number"/>
<!-- month -->
<xsl:sort select="string-length(substring-before($Months, substring(pubDate, 9, 3)))" order="descending" data-type="number"/>
<!-- day -->
<xsl:sort select="substring(pubDate, 6, 2)" order="descending" data-type="number"/>
<!-- hour -->
<xsl:sort select="substring(pubDate, 18, 2)" order="descending" data-type="number"/>
</xsl:apply-templates>
<xsl:apply-templates select="@*|node()[not(following-sibling::item) and not(self::item)]"/>
</xsl:copy>
</xsl:template>
날짜는 날짜 또는 날짜 - 시간인가? XSLT 1.0 또는 XSLT 2.0을 사용하고 있습니까? 또한 XML을 게시하는 답변을 편집 할 수 있습니까? –
분명히 가능하지만 사소하지는 않습니다. RFC-822 날짜를 정렬 가능한 것으로 변환하는 XSLT 파서를 작성해야합니다. EXSLT 함수와 XPath 문자열 함수를 사용할 것입니다. 이 날짜 - 시간 요소는 문자열에서 같은 위치에 항상 있다고 가정으로이이 솔루션은 매우 부서지기 쉬운 것 같습니다 도움이 http://www.codeproject.com/Articles/4261/Sorting-dates-in-XSL – nwellnhof
. 이것은 반드시 사실 일 필요는 없습니다. 예를 들어, 날짜 - 시간 시작 부분의 요일은 선택 사항입니다. 또한 한 달 또는 두 자리를 사용하여 일을 지정할 수도 있습니다. – Vinit