1

我正在尝试从一个 xml 文件生成一个 .csv,该文件包含“OtherEmployees”的计数,其出生日期早于某个日期(例如 1970 年 1 月 1 日),但我不确定语法。

请注意,日期当前为 dd/mm/yyyy 格式。

这是 xml 的一个示例 -

<Companies>
<Company>
    <CompanyReference>00000060</CompanyReference>
    <Contact>
        <PersonID>63</PersonID>
        <Title>Mrs</Title>
        <Forename>EXAMPLE</Forename>
        <Middlename/>
        <Surname>NAME</Surname>
        <DOB>27/05/1928</DOB>
    </Contact>
    <OtherEmployees>
        <OtherEmployee>
            <PersonID>28870</PersonID>
            <Title>Miss</Title>
            <Forename>EXAMPLE</Forename>
            <Middlename/>
            <Surname>NAME2</Surname>
            <DOB>03/05/1953</DOB>
        </OtherEmployee>
        <OtherEmployee>
            <PersonID>28871</PersonID>
            <Title>Miss</Title>
            <Forename>EXAMPLE</Forename>
            <Middlename/>
            <Surname>NAME3</Surname>
            <DOB>11/07/1961</DOB>
        </OtherEmployee>
    </OtherEmployees>
</Company>

我能够通过以下方式获得出生日期的 OtherEmployees 的计数 -

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB])"/>

但是,我现在需要将 DOB 与另一个日期进行比较 - 比如说 01/01/1970,并且如果他们的出生日期早于 1970 年 1 月 1 日,则仅返回计数中的 OtherEmployee。

4

1 回答 1

2

使用 XSLT 2.0,您可以使用 xs:date 数据类型,例如

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB and xs:date(concat(substring(DOB, 7), '-', substring(DOB, 4, 2), '-', substring(DOB, 1, 2))) lt xs:date('1970-01-01')])"/>

使用 XSLT 1.0,您可以轻松地将数据格式转换dd/mm/yyyy为数字yyyymmdd并进行比较:

<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB and number(concat(substring(DOB, 7), substring(DOB, 4, 2), substring(DOB, 1, 2))) &lt; 19700101])"/>
于 2013-01-07T15:50:48.457 回答