2010-05-12 16 views
0

一些名單我有一個URL結構是這樣的:XSLT如何合併的參數

http://my.domain.com/generated.xml?param1=foo&param2=bar&xsl=path/to/my.xsl 

生成的XML將使用給定的XSL樣式表進行改造。另外兩個參數都集成太多這樣的:

<root> 
    <params> 
    <param name="param1">foo</param> 
    <param name="param2">bar</param> 
    </param> 
    ... 
</root> 

現在我想用XSLT來創建一個新的URI,保持現有參數,並增加了像page=3sort=DESC一個或多個新參數的鏈接。如果給定的參數已經存在,它應該被替換。

我不知道如何做到這一點。如何將多個(可選)參數傳遞給模板。如何合併兩個參數列表。

任何想法?

感謝;)

+0

您是否事先知道可選參數的名稱? – Welbog 2010-05-12 16:20:59

+0

編號'頁面'和'排序'只是一些例子。接受的參數的編號和名稱可以根據參數1和參數2而有所不同。 – 2010-05-13 13:29:48

回答

0

你的目標,按照我的理解,是要建立一個像這樣的字符串:http://my.domain.com/generated.xml?param1=foo&param2=bar&page=3&sort=DESC&xsl=path/to/my.xsl沒有重複的參數。所以如果有這樣一個請求,像這樣http://my.domain.com/generated.xml?param1=foo&sort=ASC&xsl=path/to/my.xsl你不會不小心做出這樣的結果http://my.domain.com/generated.xml?param1=foo&sort=ASC&page=3&sort=DESC&xsl=path/to/my.xsl。是對的嗎?

如果是這種情況,我會爲您需要的每個參數定義一個變量,如果適用,則將其值分配給URL,否則爲其分配默認值。沿着這些路線的東西:

<xsl:variable name="sort"> 
    <xsl:choose> 
    <xsl:when test="/root/params/param[name='sort']"> 
     <!-- Use the available parameter if it exists. --> 
     <xsl:value-of select="/root/params/param[name='sort']/text()"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <!-- Use a default value when the parameter doesn't exist. --> 
     <xsl:text>DESC</xsl:text> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 

而且當你建立你得到的URI你可以只使用$sort,而不必擔心它是否已填充了默認值或URL參數。