我正在研究一项基于日期字段为每个父元素过滤子元素的要求。对于每个Report_Entry元素,我需要返回某个人于2019年在任何公司中活跃的所有FEIN_CHANGE节点。我添加了示例XML和所需的输出以帮助理解需求。任何帮助或伪代码将不胜感激。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<wd:Report_Data xmlns:wd="urn:com.workday.report/CR-TAX_REPORTING_UNIT">
<wd:Report_Entry>
<wd:PERSON_NUMBER>2128984</wd:PERSON_NUMBER>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2002-06-03-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>Columbia</wd:COMPANY>
</wd:FEIN_CHANGE>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2011-10-28-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>CBS Records</wd:COMPANY>
</wd:FEIN_CHANGE>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:PERSON_NUMBER>2169797</wd:PERSON_NUMBER>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2008-05-05-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>RCA</wd:COMPANY>
</wd:FEIN_CHANGE>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:PERSON_NUMBER>2181815</wd:PERSON_NUMBER>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2014-10-10-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>ACTIVISION</wd:COMPANY>
</wd:FEIN_CHANGE>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2016-10-10-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>BLIZZARD</wd:COMPANY>
</wd:FEIN_CHANGE>
<wd:FEIN_CHANGE>
<wd:EFFECTIVE_DATE>2019-04-01-07:00</wd:EFFECTIVE_DATE>
<wd:COMPANY>Virgin ecords</wd:COMPANY>
</wd:FEIN_CHANGE>
</wd:Report_Entry>
</wd:Report_Data>
预期输出:
2128984|2011-10-28|CBS Records
2169797|2008-05-05|RCA
2181815|2016-10-10|BLIZZARD
2181815|2019-04-01|Virgin Records
答案 0 :(得分:0)
如果我正确理解了您的解释,则每个FEIN_CHANGE
都会有效,直到被下一个终止为止。并且您想要显示在2019年1月1日之前尚未终止的所有FEIN_CHANGE
。
如果是这样,您可以这样做:
XSLT 2.0
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xpath-default-namespace="urn:com.workday.report/CR-TAX_REPORTING_UNIT">
<xsl:output method="text"/>
<xsl:template match="/Report_Data">
<xsl:for-each select="Report_Entry/FEIN_CHANGE[not(following-sibling::FEIN_CHANGE[xs:date(EFFECTIVE_DATE) lt xs:date('2019-01-01')])]">
<xsl:value-of select="../PERSON_NUMBER, xs:date(EFFECTIVE_DATE), COMPANY" separator="|"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>