Подсчет узлов с определенными значениями атрибутов в XSLT - PullRequest
3 голосов
/ 21 июня 2010

Предположим, у меня есть такой XML-код:

    <section name="SampleSection">
        <item name="ScoredItem1">
            <attributes>
                <scored data_type="boolean" value="true"/>
            </attributes>
        </item>
        <item name="UnscoredItem1">
            <attributes>
                <scored data_type="boolean" value="false"/>
            </attributes>
        </item>
        <item key="(3272fbb5:22)" name="ScoredItem2">
            <attributes>
                <scored data_type="boolean" value="true"/>
            </attributes>
        </item>
    </section>

Теперь, я знаю, используя XSLT, я могу сосчитать элементы, которые имеют scored attribute, например:

<xsl:variable name="scoredItems" select="item/attributes/scored"/>
<xsl:value-of select="count($scoredItems)"/>

Это даст мне значение 3, конечно.

Предположим, я хочу считать только те предметы, для которых scored равно true. Как мне это сделать с помощью XSLT? (Это должно вернуть значение 2 для этого примера.

1 Ответ

9 голосов
/ 21 июня 2010

Сделай так:

<xsl:variable name="scoredItems"
              select=
                  "item/attributes/scored[@value='true']"/>
...