2013-02-15 97 views
0

我得到YYYY-MM-DD格式的DOB。在if语句中得到出生日期的年龄

我必须计算年龄,如果年龄大于18,那么我必须通过名字。

如何做到这一点的XSLT

<xsl:if test="age>18"> 
     <xsl:element name="first_nam" "> 
    <xsl:value-of select="FirstName_TEXT/text()"/> 
     </xsl:element> 
    </xsl:if> 

如何计算在这个年龄段。并将此camparison> 18将工作..

+1

@Vinit - “>”在大多数处理器中应该没问题。 “<”应该总是被转义。 – 2013-02-15 16:48:35

+0

'>'在XML属性值和元素内容中没有问题,它的'<'和'&'不是。 – 2013-02-15 16:49:22

+0

哎呀...知道了...谢谢 – Vinit 2013-02-15 16:50:29

回答

2

我不知道你将如何做,在1.0,但如果有任何机会,你可以用2.0的,它很容易:

XML输入

<person> 
    <dob>1980-05-22</dob> 
    <FirstName_TEXT>Pac</FirstName_TEXT> 
</person> 

XSLT 2.0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="xs" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:template match="/person"> 
     <xsl:variable name="age" select="floor(days-from-duration(current-date() - xs:date(dob)) div 365)"/> 
     <xsl:if test="$age > 18"> 
      <first_nam> 
       <xsl:value-of select="FirstName_TEXT"/> 
      </first_nam> 
     </xsl:if> 
    </xsl:template> 

</xsl:stylesheet> 

结果

<first_nam>Pac</first_nam> 
+0

感谢您的回答。 – 2013-02-15 17:47:02

+0

@saurabhmohan - 你非常欢迎。你能够使用XSLT 2.0吗?这回答了你的问题了吗? – 2013-02-15 18:13:39

+0

我试过你的代码iam得到错误当前日期是未知的xslt函数 – 2013-02-15 18:25:25