Вместо того, чтобы выбрать элемент, который вы хотите , попробуйте , исключая элементы, которые вам не нужны .
Если вы просто используете XPATH , при этом будут выбраны все элементы, кроме элементов book
, у которых @id
не равно 1 (т.е. <booklist><book id="1" /></booklist>
).
//*[not(self::book[@id!='1'])]
Если вы хотите решение XSLT , эта таблица стилей имеет пустой шаблон, который соответствует всем элементам <book>
, которые не имеют @id="1"
, что предотвращает их копирование в вывод.
Все остальное (узел документа <booklist>
и <book id="1">
) будет соответствовать шаблону идентификации, который копируется вперед.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--Empty template to prevent book elements
that do not have @id="1" from being
copied into the output -->
<xsl:template match="book[@id!='1']" />
<!--identity template to copy all nodes and attributes to output -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>