0
我對xslt很陌生,所以任何幫助都將非常感謝。以下是我的示例xml文件。XSLT 1.0子串然後選擇不同
<DocumentElement>
<Records>
<date>2014-07-01 00:00</date>
</Records>
<Records>
<date>2014-08-03 00:00</date>
</Records>
<Records>
<date>2013-08-03 00:00</date>
</Records>
<DocumentElement>
我需要的僅僅是從日期中選擇不同的年份。
目前我有下面的xslt帶來了複製年。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:ms="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="years" select="DocumentElement/Records/date"/>
<ul>
<xsl:for-each select="$years">
<li>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="concat('?archive=',substring(., 1, 4))"/>
</xsl:attribute>
<xsl:value-of select="substring(., 1, 4)"/>
</xsl:element>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
這使我的結果如下:
<ul>
<li>
<a href="?archive=2014">2014</a>
</li>
<li>
<a href="?archive=2014">2014</a>
</li>
<li>
<a href="?archive=2014">2013</a>
</li>
</ul>
但是我預期的結果應該是
<ul>
<li>
<a href="?archive=2014">2014</a>
</li>
<li>
<a href="?archive=2014">2013</a>
</li>
</ul>
我嘗試下面的下面,但我得到空的輸出
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:ms="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="years" select="substring(DocumentElement/Records/date, 1, 4)"/>
<ul>
<xsl:for-each select="$years[not(.=preceding::*)]">
<li>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="concat('?archive=',substring(., 1, 4))"/>
</xsl:attribute>
<xsl:value-of select="substring(., 1, 4)"/>
</xsl:element>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
任何幫助將會非常感謝。謝謝。
非常感謝。它的工作就像一個魅力 – dansasu11 2014-09-10 14:23:38