Ты почти сделал это сам.
/*/item[@filter = 1][1]
Взгляните на этот пример (явно value-of
только для ясности):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:value-of select="*/item[@filter = 1][1]"/>
</xsl:template>
</xsl:stylesheet>
Результат с этим правильно сформированным вводом:
<structure>
<item filter="0">1 do not display</item>
<item filter="1">2 display</item>
<item filter="1">3 display</item>
<item filter="0">4 do not display</item>
</structure>
будет 2 display
.
Чтобы выбрать все элементы, которые соответствуют условию @filter=1
, кроме первого из них, используйте это выражение xpath:
/*/item[@filter = 1][position() > 1]