sorry, it's late and i wasn't paying enough attention - pls ignore my
previous reply. looking at your input data, you could make things a lot
easier for yourself:
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="Results">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="Part">
<xsl:sort order="ascending" select="@DisplayValue" />
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="Part[not(contains(@DisplayValue, 'BM5125'))]"/>
hmm, i think that makes more sense. sorry for the confusion.
the key is that the most specific template will be used, so for Part
elements that don't have a DisplayValue attribute that contains the
specific string the empty, no-copy template will be invoked.
regards,
/m
Martin Klang
http://www.o-xml.org - the object-oriented XML programming language
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list