尝试使用 xslt 删除 xml 中与兄弟节点中的文本匹配的几个节点
我的 xml 如下所示
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:map="http://www.w3.org/2005/xpath-functions/map">
<row>
<Keep_Name>Africa</Keep_Name>
</row>
<row>
<Keep_Name>USA</Keep_Name>
</row>
<row>
<Keep_Name>Mexico</Keep_Name>
</row>
<row>
<Keep_Name>Canada</Keep_Name>
</row>
<row>
<Keep_Name>Malaysia</Keep_Name>
</row>
<row>
<Remove_Name>Africa</Remove_Name>
</row>
<row>
<Remove_Name>Mexico</Remove_Name>
</row>
<row>
<Remove_Name>Srilanka</Remove_Name>
</row>
<row>
<Keep_Name>Bangladesh</Keep_Name>
</row>
</root>`
我需要的输出如下
`<?xml version="1.0" encoding="UTF-8"?>
<root >
<row>
<Keep_Name>USA</Keep_Name>
</row>
<row>
<Keep_Name>Canada</Keep_Name>
</row>
<row>
<Keep_Name>Malaysia</Keep_Name>
</row>
<row>
<Keep_Name>Bangladesh</Keep_Name>
</row>
</root>
` 在 xslt 下试过了,但不能正常工作。我希望这些 Remove_Name 节点以及具有相同值的 Keep_Name 节点从输出中一起删除
`<xsl:stylesheet version="2.0"
<xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="row[.=preceding-sibling::row/.]"/>
</xsl:stylesheet>`
尝试了上述 xslt 但是它没有按预期工作。
仅当它们的文本匹配时,请帮助我删除输出中的这些 Remove_Name 和 Keep_Name 节点。`