2013-03-22 7 views
-1

Как мы можем достичь ниже логики.XSLT Logic Перезаписать временную переменную

Уникальный идентификатор является временной переменной. PALLET_NUMBER поступает с входа.

если PALLET_NUMBER! = NULL, то

UniqueID = подстрока (PALLET_NUMBER, 10)

если PALLET_NUMBER = NULL, то

UniqueID = подстрока (CARTON_NUMBER, 7)

мы можем получить значение UniqueID из вышеуказанных двух условий. Эти вещи происходят в итерационном цикле. Как мы можем перезаписать временную переменную UniqueID.

bacause позже Существует состояние, мы должны поставить как

<foreach> 
If previous UniqueID != current UniqueID then 

     <Some code> 
     <IF> 
</foreach> 
+1

вы не можете перезаписать переменные в XSLT – Treemonkey

+1

Кроме того, если вы разместите ваш входной XML/XSLT вы пытались использовать и хотел вывод мы можем предоставить дополнительную помощь. – Treemonkey

+0

XSLT - это функциональный язык, а не процедурный, и вы не можете мыслить в терминах «итерации» и «переменных», как вы можете использовать на других языках. Если вы можете отредактировать свой вопрос, включив образец ввода и желаемый результат, мы можем дать вам несколько указаний о том, как добиться сопоставления более функциональным способом. –

ответ

1

Вы не можете перезаписать переменную в XSLT.

Возможно, вы захотите найти функции расширения xslt для достижения своей цели.

0

Как Treemonkey, говорит, что это не возможно перезаписать переменные, но вы можете получить что-то, как вы описали с помощью рекурсии:

Предположим, что вы что-то вроде этого:

<xsl:for-each select="my/node/isNamed/something" /> 

Вы могли бы сделать это вместо :

<xsl:variable name="items" select="my/node/isNamed/something" /> 
<xsl:apply-templates select="$items[1]"> 
    <xsl:with-param name="remainder" select="$items[position() > 1" /> 
</xsl:apply-templates> 

<!-- Separate template --> 
<xsl:template match="something"> 
    <xsl:param name="remainder" /> 
    <xsl:param name="lastId" /> 

    <xsl:variable name="uniqueId" select="..." /> 
    <!-- Contents of the xsl:for-each --> 

    <xsl:apply-templates select="$remainder[1]"> 
    <xsl:with-param name="remainder" select="$remainder[position() > 1]" /> 
    <xsl:with-param name="lastId" select="$uniqueId" /> 
    </xsl:apply-templates> 
</xsl:template> 
Смежные вопросы