这可以通过建立在恒等变换之上来实现。首先,您需要一个模板来忽略@ref 为“否”的主题元素
<xsl:template match="subject[@ref='no']" />
对于@ref 为“yes”的主题元素,您还有另一个模板可以仅输出其子元素
<xsl:template match="subject[@ref='yes']">
<xsl:apply-templates select="node()"/>
</xsl:template>
事实上,如果@ref 只能是“是”或“否”,您可以简化此模板匹配,就像<xsl:template match="subject">
这将匹配所有没有@ref 为“否”的元素
这是完整的 XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="subject[@ref='no']" />
<xsl:template match="subject">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于您的示例 XML 时,将输出以下内容
<testing>
<firstname> tom </firstname>
</testing>