Как проверить, имеет ли тег «следующий брат» определенное значение атрибута? - PullRequest
1 голос
/ 06 марта 2012

Пример xml:

<body>
<macroField dictTag="comment"></macroField>
<macroField dictTag="comment"></macroField>
<macroField dictTag="comment"></macroField>
<macroField dictTag="comment"></macroField>
<macroField dictTag="stopName">Old Wisconsin </macroField>
<macroField dictTag="stopName">Another stop</macroField>
<macroField dictTag="stopName">Another stop</macroField>
</body>

Мне нужно преобразовать комментарии в div, но после последнего комментария я хочу добавить дополнительный текст «STOPS:» перед тем, как показать stop.

Я пыталсяэтот xsl для тега комментария, но по какой-то причине он оценивается как true для каждого тега комментария, а не только для последнего:

   <xsl:template match="*[@dictTag = 'comment']">
    <div class="comment_line">
        <xsl:value-of select="."/>
    </div>
    <xsl:if test="following-sibling::macroField/@dictTag = 'stopName'">
        <p>STOPS</p>
    </xsl:if>
</xsl:template>

Что не так с моим xsl: if test?Как мне изменить его так, чтобы выражение if оценивалось в true только для последнего элемента комментария?

1 Ответ

3 голосов
/ 06 марта 2012

Следующий брат может относиться к ЛЮБОМУ последующему брату, а не только к ближайшему, младший брат все еще моложе, даже если он самый старший, и он младший из 3. Попробуйте это:

following-sibling::macroField[1]/@dictTag = 'stopName'

Какойвыбирает на первом следующем брате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...