我是xslt的新手,需要您的帮助。
我的输入xml文件如下
key: one, value:
key: two, value:
key: three, value: 3
key: four, value: 4
key: five, value: five
我的输出应该像这样
<dataset>
<item date="13days" />
<item date="14days" />
<item date="27days" />
</dataset>
地图如下:
<dataset>
<item date="1week" />
<item date="2week" />
<item date="3week" />
</dataset>
现在我只知道如何更改特定日期,但是我需要范围。这是我的尝试。
0days<=1week<14days
14days<=2week<21days
21days<=3week<28days
答案 0 :(得分:1)
您不能简单地做:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@date">
<xsl:variable name="d" select="substring-before(., 'days')" />
<xsl:attribute name="date">
<xsl:choose>
<xsl:when test="$d < 14">1week</xsl:when>
<xsl:when test="$d < 21">2week</xsl:when>
<xsl:when test="$d < 28">3week</xsl:when>
</xsl:choose>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
或者,如果您愿意:
<xsl:template match="@date">
<xsl:variable name="d" select="substring-before(., 'days')" />
<xsl:attribute name="date">
<xsl:choose>
<xsl:when test="$d < 14">1</xsl:when>
<xsl:otherwise>
<xsl:value-of select="floor($d div 7)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>week</xsl:text>
</xsl:attribute>
</xsl:template>