我正在尝试从xml文件生成.csv,其中包含一个“OtherEmployees”计数,其中包含日期之前的出生日期(例如01/01/1970),我不确定语法。
请注意,日期目前采用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>
我能够得到具有以下出生日期的其他雇员的数量 -
<xsl:value-of select="count(OtherEmployees/OtherEmployee[DOB])"/>
但是我现在需要将DOB与另一个日期进行比较 - 例如01/01/1970,如果他们在1970年1月1日之前有出生日期,则只返回计数中的OtherEmployee。
答案 0 :(得分: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))) < 19700101])"/>