日期相关的 XSL 转换
Date dependant XSL transformation
目前我将大量的产品代码和其中包含的各种属性输出到txt文件中。 "Item End Date"是输出的属性之一。
如果项目结束日期晚于今天的日期,是否可以查询此属性值以说明仅执行 XSL 函数?
如果有帮助,我正在使用 Altova。
XML:
<Agility>
<group>
<product id="295826" subtype="CMS Product" created="20/04/12" modified="03/03/15">
<attribute definition_id="26" modified="20/04/12" is_name="true" is_identifier="true" scope="global" type="text">
<data language="English" label="CMS Product Name">012345</data>
</attribute>
<attribute definition_id="278" modified="28/08/08" scope="global" type="datetime">
<data language="English" label="Item End Date">01/01/99</data>
</attribute>
</product>
</group>
XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="product[@subtype = 'CMS Product']">
<xsl:for-each select="attribute">
<xsl:if test="@definition_id = 278">
<xsl:value-of select="data" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这样试试?
<xsl:template match="product">
<xsl:variable name="end" select="attribute/data[@label='Item End Date']" />
<xsl:variable name="end-date" select="xs:date(concat('20', substring($end, 7, 2), '-', substring($end, 4, 2), '-',substring($end, 1, 2)))" />
<xsl:if test="$end-date gt current-date()">
<!-- do your processing here -->
</xsl:if>
</xsl:template>
目前我将大量的产品代码和其中包含的各种属性输出到txt文件中。 "Item End Date"是输出的属性之一。
如果项目结束日期晚于今天的日期,是否可以查询此属性值以说明仅执行 XSL 函数?
如果有帮助,我正在使用 Altova。
XML:
<Agility>
<group>
<product id="295826" subtype="CMS Product" created="20/04/12" modified="03/03/15">
<attribute definition_id="26" modified="20/04/12" is_name="true" is_identifier="true" scope="global" type="text">
<data language="English" label="CMS Product Name">012345</data>
</attribute>
<attribute definition_id="278" modified="28/08/08" scope="global" type="datetime">
<data language="English" label="Item End Date">01/01/99</data>
</attribute>
</product>
</group>
XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="product[@subtype = 'CMS Product']">
<xsl:for-each select="attribute">
<xsl:if test="@definition_id = 278">
<xsl:value-of select="data" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这样试试?
<xsl:template match="product">
<xsl:variable name="end" select="attribute/data[@label='Item End Date']" />
<xsl:variable name="end-date" select="xs:date(concat('20', substring($end, 7, 2), '-', substring($end, 4, 2), '-',substring($end, 1, 2)))" />
<xsl:if test="$end-date gt current-date()">
<!-- do your processing here -->
</xsl:if>
</xsl:template>