2016-11-15 4 views
1

У меня есть этот XML-файл:Подсчитайте каждое вхождение элемента с определенным значением атрибута в XSLT?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<?xml-stylesheet href="bg2.xsl" type="text/xsl"?> 

<root text="Récapitulatif des bugs MD 360"> 
<graph> 
<item text="3988 (K2) : [MozillaMD]" severite="K2" importance="Anomalie" status="RESOLVED" etat=" WORKSFORME" date="2016-11-15"></item> 
<item text="4853 (K2) : Profil Midas" severite="K2" importance="Evolution" status="ASSIGNED" etat=" FIXED" date="2016-11-15"></item> 
<item text="4991 (K3) : ECU " severite="K3" importance="Evolution" status="RESOLVED" etat=" FIXED" date="2016-11-15"></item> 
</graph> 
</root> 

Я хочу, чтобы подсчитать, сколько severite="K2" у меня есть. Для этого я делаю, что в XSLT, но у меня всегда есть 0:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:template match="graph"> 
K2 -- <xsl:value-of select="count(graph/item[severite='K2'])"/> 
</xsl:template> 
</xsl:stylesheet> 

ответ

2

Изменить

K2 -- <xsl:value-of select="count(graph/item[severite='K2'])"/> 

в

K2 -- <xsl:value-of select="count(item[@severite='K2'])"/> 

потому

  1. Текущий узел уже , поэтому ваш XPath не должен повторять .
  2. severite - это атрибут, а не элемент, поэтому должен быть префикс @.
+0

Он отлично работает THX. – Gajiu

1

Количество (график/пункт [severite = 'К2'])

Графы все item с родителем . item фильтруется: дочерний severite должен иметь содержимое «K2».

Решение

count(item[@severite='K2'])

  • severite является атрибутом элемента item. @.
  • Также: ваш текущий контекст-узел уже .
+0

Это тоже работает :) Thx – Gajiu

Смежные вопросы