2014-01-31 4 views
0

Я работаю над файлом junit-frames.xsl, который отвечает за создание отчетов. Мне нужно внести некоторые изменения в файл xsl, чтобы придерживаться нашего формата для отображения содержимого. Мне трудно понять этот сложный Xpath. Может somebidy, пожалуйста, помогите.Complex Xpath in junit-frames.xsl

<xsl:apply-templates select="testsuite[not(./@package = preceding-sibling::testsuite/@package)]" mode="all.packages"> 
     <xsl:sort select="@package"/> 
    </xsl:apply-templates> 

Может ли кто-нибудь помочь? выражение XPath

ответ

2
testsuite[not(./@package = preceding-sibling::testsuite/@package)] 

выше означает:

select element named `testsuite` that match following criteria : 
have attribute `package` with value not equal to : 
attribute `package` of any previous `testsuite` element 

Так что если у вас есть XML со следующей структурой, например:

<parent> 
    <testsuite package="value1" id="1"/> 
    <testsuite package="value2" id="2"/> 
    <testsuite package="value2" id="3"/> 
    <testsuite package="value1" id="4"/> 
</parent> 

только 1-го и 2-го <testsuite> элемента будет соответствовать выше выражения XPath.

+0

поэтому он будет проверять со всеми предыдущими братьями или сестрами – anon

+0

все предыдущие братья и сестры – har07

+0

Я проверил это, чтобы убедиться. Мой обновленный ответ показывает последний xml, который я использовал для тестирования, и результат – har07