【发布时间】:2021-03-10 16:21:44
【问题描述】:
对于下面的 XML,当字段 StartDate 不等于单元 5000 的任何 StartDate 项并且(还要确保 startDate 小于等于当前日期并且 EndDate 大于或等于当前日期)
我试图匹配一个模板,但似乎是一个很好的匹配
<?xml version="1.0" encoding="UTF-8"?>
<AllRecords>
<Records>
<Record>
<Items>
<EndDate>2021-03-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>1000</company>
<Newplant>TEST1</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2021-01-01T00:00:00.000</StartDate>
<Unit>5000</Unit>
<Status>A</Status>
</Items>
<Items>
<EndDate>2020-12-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>1000</company>
<Newplant>TEST2</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2020-05-01T00:00:00.000</StartDate>
<Unit>5000</Unit>
<Status>A</Status>
</Items>
<Items>
<EndDate>2021-02-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>1000</company>
<Newplant>TEST3</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2021-02-01T00:00:00.000</StartDate>
<Unit>5000</Unit>
<Status>A</Status>
</Items>
<Items>
<EndDate>2020-12-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>2000</company>
<Newplant>TEST4</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2020-01-01T00:00:00.000</StartDate>
<Unit>6000</Unit>
<Status>A</Status>
</Items>
<Items>
<EndDate>2021-03-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>2010</company>
<Newplant>TEST5</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2021-01-01T00:00:00.000</StartDate>
<Unit>6000</Unit>
<Status>A</Status>
</Items>
<Items>
<EndDate>2021-06-31T00:00:00.000</EndDate>
<PlantDetails>
<PlantDetailsUS>
<company>2020</company>
<Newplant>TEST5</Newplant>
</PlantDetailsUS>
</PlantDetails>
<StartDate>2021-01-093T00:00:00.000</StartDate>
<Unit>6000</Unit>
<Status>A</Status>
</Items>
</Record>
</Records>
</AllRecords>
XSLT 代码
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template
match="Items[Unit=6000][not(StartDate = ../Items[Unit=5000]/StartDate)] [(StartDate <= current-date())] [(EndDate >= current-date())]"/>
</xsl:stylesheet>
【问题讨论】:
-
“我尝试匹配模板” 发布您的尝试以便我们修复它,而不必从头开始为您编写代码。
-
请不要在 cmets 中发布代码 - 而是编辑您的问题。
-
已添加到问题中
-
现在它是可见的。
-
请注意
2021-01-093T00:00:00.000不是有效的日期时间。