1

我正在获取YYYY-MM-DD格式的 DOB。

我必须计算年龄,如果年龄大于 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会起作用吗?

4

1 回答 1

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>
于 2013-02-15T16:47:40.243 回答