2011-11-19 115 views
0

我在xslt中有一個變量,它必須包含幾個取決於頁面的值。 我知道<xslt: variable>無法完成這項工作,因爲變量無法更改。我該怎麼做最好的方法

可以xslt:param可以做這項工作,我該如何改變它的價值?

Roelof

編輯1:我試着解釋我想要的。我有一個每月顯示文章的網站。我真正喜歡的是一個腳本,我可以過濾這些文章,因此只有特定月份的文章纔會顯示在頁面中。但我需要確定每頁上顯示的文章數量。所以顯示文章的數量是基於月份和顯示的頁面。

+1

我猜你正在嘗試在程序上使用xslt。您能否請您張貼您的輸入樣本以及您想要的輸出?就目前而言,恐怕你的問題不能得到合理的回答。 – FailedDev

回答

0

XSLT是一種功能性的語言,其中,除其他事項外,是指一個或xsl:variablexsl:param,指定一次不能改變它的值。

這並不妨礙在XSLT中表達任何問題的解決方案(XSLT是圖靈完備版),並且只需要一個人根據命令式編程範例改變思路。

一旦你發佈你的具體問題,許多讀者將能夠提供完整的XSLT解決方案。

下面是一個簡單的例子

我們「積累」在一個變量希望值,然後將它輸出:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:variable name="vOddsAccumulator"> 
    <xsl:apply-templates/> 
</xsl:variable> 

<xsl:template match="/"> 
    <xsl:value-of select="$vOddsAccumulator"/> 
</xsl:template> 

<xsl:template match="*/*"/> 

<xsl:template match="num[. mod 2 = 1]"> 
    <xsl:value-of select="concat(., ' ')"/> 
</xsl:template> 
</xsl:stylesheet> 

當這種轉換應用於以下XML文檔

<nums> 
    <num>01</num> 
    <num>02</num> 
    <num>03</num> 
    <num>04</num> 
    <num>05</num> 
    <num>06</num> 
    <num>07</num> 
    <num>08</num> 
    <num>09</num> 
    <num>10</num> 
</nums> 

通緝[R esult生產

01 03 05 07 09