|
Тема
|
Реализация на цикъл в XSLT
|
|
Автор |
GingerCat (Цветен) |
Публикувано | 16.05.03 10:45 |
|
За един документ ми трябваше да реализирам нещо като цикъл в XSLT.
Малко четене и ровене и ето едно решение. Ако някой знае друг начин или идея, би ми било интерсно да я науча.
<?xml version="1.0" encoding="UTF-8"?>
<xslt:stylesheet xmlns:xslt="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xslt:output method="text" />
<xslt:param name="p_from" select="1" />
<xslt:param name="p_to" select="20" />
<xslt:param name="p_step" select="1" />
<xslt:template match="/">
<axslt:call-template xmlns:axslt="http://www.w3.org/1999/XSL/Transform" name="for">
<axslt:with-param select="$p_from" name="i"/>
<axslt:with-param select="$p_to" name="to"/>
<axslt:with-param select="$p_step" name="step"/>
</axslt:call-template>
</xslt:template>
<axslt:template xmlns:axslt="http://www.w3.org/1999/XSL/Transform" name="for">
<axslt:param name="i"/>
<axslt:param name="to"/>
<axslt:param name="step"/>
i = <xslt:value-of select="$i"/>
<axslt:if test="$i+$step <= $to">
<axslt:call-template name="for">
<axslt:with-param select="$i + $step" name="i"/>
<axslt:with-param select="$to" name="to"/>
<axslt:with-param select="$step" name="step"/>
</axslt:call-template>
</axslt:if>
</axslt:template>
</xslt:stylesheet>
Редактирано от GingerCat на 16.05.03 10:48.
| |
Тема
|
Re: Реализация на цикъл в XSLT
[re: GingerCat]
|
|
Автор |
Пepин (овълчил се) |
Публикувано | 16.05.03 21:29 |
|
Ами нещо подобно на цикъл, но не съвсем е ако имаш всички стойности някъде в някакъв елемент, примерно месеците:
<root>
<year>
<month name='jan'/>
<month name='feb'/>
<month name='mar'/>
<month name='apr'/>
</year>
.... other data ....
</root>
и после:
<xsl:for-each select='/year/month/@name'> ....
Предварително се извинявам за неправилен синтаксис, ама схващате идеята.
Е, да очакваме всички възможни стойности на цикловата променива да са в изходния файл е оптимистично, но може да include-нем. Не съм сигурен че е по-оптимално решение, но ако имаш списък стойности, вместо числов интервал, си струва.
За повече варианти сигурно трябва да погледнем в книгата 'как да направим по сложен начин в XSLT неща които на други езици стават много лесно'. Изобщо съчетаването на процедурно и декларативно програмиране не е лесна работа
There are 10 types of people in this world: those who understand binary and those who don't.
| |
|
|
|
|