XSL 选择性复制

XSL selective copy

我有这个 XML 文件:

<bases>
<marker>
       <name>Main</nane>
       <city>Hartford</city>
       <tag>current</tag>
</marker>
<marker>
       <name>Secondary</nane>
       <city>Boston</city>
       <tag>none</tag>
</marker>
<marker>
       <name>Tertiary</nane>
       <city>Bedford</city>
</marker>
</bases>

我只想复制标签元素与“当前”匹配的那些标记。所以,输出将是这样的:

<bases>
<marker>
       <name>Main</nane>
       <city>Hartford</city>
       <tag>current</tag>
</marker>
</bases>

我是 XSLT 新手,我搞不懂。请帮忙。

你可以像这样简单地做:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0">

  <xsl:output method="xml" indent="yes"/>
  
  <!-- Remove all marker elements where element tag value is not 'current' -->
  <xsl:template match="marker[not(tag='current')]"/>
  
  <!-- Identity template -->
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
  
</xsl:stylesheet>

看到它在这里工作:https://xsltfiddle.liberty-development.net/aiynev/2