XSL:过滤一个字段中的日期大于/晚于另一个字段中的日期

时间:2016-02-23 13:22:39

标签: xml date xslt

我有一个看起来像这样的XML文件 - 它是一个用户列表,每个用户都有两个日期。它可能是两个字段中的相同日期(我的示例文件中的第一个用户),也可能是不同的日期(第二个和第三个用户)。

我想过滤这个文件,所以它只给了那些lastActivityDate大于/晚于datePrivilegeGranted

的用户

这个XML文件看起来像这样

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="activityvsprivilege2.xsl"?>
<report>
<title>Display Users</title>
<dateCreated>2016-02-23T13:58:56</dateCreated>
<dateFormat>yyyy/mm/dd</dateFormat>
<user>
<userID>0108484181</userID>
<name>
<displayName>Johansson</displayName>
</name>
<lastActivityDate>2005-08-18</lastActivityDate>
<datePrivilegeGranted>2005-08-18</datePrivilegeGranted>
</user>
<user>
<userID>4187101934</userID>
<name>
<displayName>Karlsson</displayName>
</name>
<lastActivityDate>2015-03-17</lastActivityDate>
<datePrivilegeGranted>2013-08-23</datePrivilegeGranted>
</user>
<user>
<userID>20580001535250</userID>
<name>
<displayName>Persson</displayName>
</name>
<lastActivityDate>2012-05-18</lastActivityDate>
<datePrivilegeGranted>2009-08-20</datePrivilegeGranted>
</user>
</report>

我的XSL样式表的初稿看起来像这样 - 我想我应该对for-each-part做些什么?

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
    <user>
    <xsl:for-each select="report/user">
    <patronline>
        <userID><xsl:value-of select="userID"/></userID>
        <displayName><xsl:value-of select="name/displayName"/></displayName>
        <lastActivityDate><xsl:value-of select="lastActivityDate"/></lastActivityDate>
        <datePrivilegeGranted><xsl:value-of select="datePrivilegeGranted"/></datePrivilegeGranted>
    </patronline>
    </xsl:for-each>
    </user>
</xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

我猜你想做:

XSLT 1.0

def products = Product.findAllByFirmData(object.firmData)