【发布时间】:2017-02-01 12:06:51
【问题描述】:
我想在 XSLT 1.0 中根据必须匹配父属性的属性值将元素保留在 XML 中并删除其他元素
我只想保留属性 Journee 与父属性 Date 匹配的 DONNEES 元素。它可以是任何我不能放像 ='2015-09-17T06:00:00' 这样的日期。
这是 XML 示例
<?xml version="1.0"?>
<Root>
<JOURNEE Date="2015-09-17T06:00:00">
<ID>
<DONNEES Journee="2015-09-17T06:00:00"/>
<DONNEES Journee="2015-09-18T06:00:00"/>
<DONNEES Journee="2015-09-19T06:00:00"/>
</ID>
</JOURNEE>
<JOURNEE Date="2015-09-18T06:00:00">
<ID>
<DONNEES Journee="2015-09-17T06:00:00"/>
<DONNEES Journee="2015-09-18T06:00:00"/>
<DONNEES Journee="2015-09-19T06:00:00"/>
</ID>
</JOURNEE>
<JOURNEE Date="2015-09-19T06:00:00">
<ID>
<DONNEES Journee="2015-09-17T06:00:00"/>
<DONNEES Journee="2015-09-18T06:00:00"/>
<DONNEES Journee="2015-09-19T06:00:00"/>
</ID>
</JOURNEE>
</Root>
这是我想要的输出
<Root>
<JOURNEE Date="2015-09-17T06:00:00">
<ID>
<DONNEES Journee="2015-09-17T06:00:00"/>
</ID>
</JOURNEE>
<JOURNEE Date="2015-09-18T06:00:00">
<ID>
<DONNEES Journee="2015-09-18T06:00:00"/>
</ID>
</JOURNEE>
<JOURNEE Date="2015-09-19T06:00:00">
<ID>
<DONNEES Journee="2015-09-19T06:00:00"/>
</ID>
</JOURNEE>
</Root>
这是我现在拥有的 XSLT,它不起作用,它会删除所有数据
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*/*DONNEES[(@Journee != /*/JOURNEE/@Date)]" />
我试过了,它可以工作,但我不能有这样的数据
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*/*DONNEES[(@Journee != '2015-09-17T06:00:00')]" />
谢谢你:)
【问题讨论】: