У меня проблема с созданием условия xslt, чтобы фильтр узла соответствовал самой последней информации о задании.
ниже xml input
<queryCompoundEmployeeResponse>
<CompoundEmployee>
<id>11111</id>
<person>
<employment_information>
<job_information>
<end_date>9999-12-31</end_date>
<start_date>2017-05-17</start_date>
</job_information>
<job_information>
<end_date>2018-12-31</end_date>
<start_date>2017-05-17</start_date>
</job_information>
</employment_information>
</person>
</CompoundEmployee>
</queryCompoundEmployeeResponse>
вот xml output Я хотел бы иметь
<queryCompoundEmployeeResponse>
<CompoundEmployee>
<id>11111</id>
<person>
<employment_information>
<job_information>
<end_date>9999-12-31</end_date>
<start_date>2017-05-17</start_date>
</job_information>
</employment_information>
</person>
</CompoundEmployee>
</queryCompoundEmployeeResponse>
здесь xslt input
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xsl xs">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<!--remove all employees with past and previous dalta to have only current data-->
<xsl:template match="//queryCompoundEmployeeResponse/CompoundEmployee/person/employment_information/job_information[((start_date < current-date()) and (job_information/end_date > current-date()))]"/>
</xsl:stylesheet>
Правило простое: последний узел job_information всегда находится на вершине xml, и я хотел бы У меня есть только самая последняя информация о задании xml.
Он отлично работает с фильтром xpath:
/queryCompoundEmployeeResponse/CompoundEmployee[(person/employment_information/job_information[1])]
, но мне нужно иметь условие xpath внутри условия xslt относительно start_date и end_date .
Вы можете мне помочь?