Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > next() XSLT


Автор: hug 14.5.2008, 18:29
Добрый День такой вопрос:

Код



<xsl:apply-templates select="//tbody/tr[td/b/text()='Даты_заездов']"/>

<xsl:template match="tr">
        <xsl:apply-templates select="current()/td[@colspan>1]"/>
</xsl:template>


Задача: Применить шаблон не только для этого tr но и для следущего tr (того же уровня sibling)

Помогите. А то уже замучился

Автор: JVM 15.5.2008, 08:32
Чтобы ответить на вопрос не хватает данных. С виду все нормально, но если не получается, то надо смотреть откуда вызывается первый apply-templates и какая структура исходного xml.

Ось правильно называется following-sibling

Автор: hug 15.5.2008, 08:44
Код


<xsl:template match="/">
        <root>
            <xsl:apply-templates select="//tbody/tr[td/b/text()='Даты_заездов']"/>
        </root>
</xsl:template>
<xsl:template match="tr">
        <xsl:apply-templates select="current()/td[@colspan>1]"/>]
                 <xsl:if test="preceding-sibling::tr[td/b/text()='Даты_заездов']">
                <xsl:apply-templates select="following-sibling::*[1]"/>
         </xsl:if>
</xsl:template>



Пробую так, но так не работает
Код

<xsl:apply-templates select="//tbody/following-sibling::tr[1][td/b/text()='Даты_заездов']"/>


Это тоже неправильно

Автор: JVM 15.5.2008, 10:08
У меня еще больше непонимания.
Чтобы проще объяснить чего хочется напиши исходный и результирующий xml и дополни их комментариями.

Автор: ibnteo 15.5.2008, 13:41
Цитата(hug @ 15.5.2008,  06:44)
[code=xml]
Пробую так, но так не работает
Код

<xsl:apply-templates select="//tbody/following-sibling::tr[1][td/b/text()='Даты_заездов']"/>


Это тоже неправильно

Не очень понятно что нужно получить, но представленный вариант имеет смысл только в следующем виде:
Код

<xsl:apply-templates select="//tbody/tr[td/b/text()='Даты_заездов']/following-sibling::tr[1]"/>


Автор: hug 16.5.2008, 10:23
Спасибо. То что нужно

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)