2011-09-11 55 views
2

我以下鏈接 http://spyralout.com/2009/03/16/current-page-url-using-xsl-for-content-query-web-part/顯示頁面的URL的SharePoint XSLT

我想我的頁面上顯示的查詢字符串值。對於我看到的計算器,我發現有點complicated.So我的方法一種解決方案是:

1)子-後獲取該URL當前URL

2)用得到的查詢字符串的值..

我可以用一些如解釋這一點。

我的網頁網址www.stackoverflow.com/questions.aspx?display=18..I想我的網頁上顯示18 ...

我到目前爲止所做的...

1)我在XSLT 的xmlns加入名稱空間:DDWRT = 「http://schemas.microsoft.com/WebParts/v2/DataView/runtime」

2)增加了一個參數

<xsl:param name=」PageUrl」 />

3)增加了可變

<xsl:variable name=」DetailPageLink」 select=」$PageUrl」 />

4)現在,當我試圖在子-AFTE使用這個這個值r,它沒有顯示任何值...?

<xsl:value-of select="substring-after($DetailPageLink,'=')" />

5)我也曾嘗試

<xsl:value-of select="$DetailPageLink" />但它不提供任何價值..?

任何想法,我錯了......

再次感謝Dimitre回答...但仍然問題是一樣的...因爲我說我不想URL傳遞到全局參數..我希望它是動態的...回答你的問題..我不知道它背後的邏輯......我認爲它是因爲這個名字空間我用過.... PageUrl獲取當前頁面的URL ....但是當我試圖

的xsl:選擇= 「$ DetailPageLink」 複製的/>或

的xsl:選擇= 「$ DetailPageLink」 價值的/>或

xsl:value-of select =「substring-after($ DetailPageLink,'=')」/> ...

它不顯示任何輸出...但有趣的是,當我使用它時顯示頁面url

A HREF = 「{$ DetailPageLink}」>傑克 /A>

因此,這意味着PAGEURL越來越值....否則標籤不應該表現出任何輸出...

如果你知道任何其他方法來獲取當前頁面的網址,請讓我知道....

+0

那麼,什麼是問題?您非常希望提供一個完整的(但簡短的)例子:源XML文檔,轉換,管理轉換的規則,想要的和實際的結果以及實際結果的錯誤。 –

+0

對不起,如果它不清楚..沒有唯一的事情..例如..如果我的網頁是http://stackoverflow.com/questions.aspx?display=1....我想顯示1上我的webpart ...因此,我想使用

5)我也曾嘗試

<xsl:value-of select="$DetailPageLink" />但它沒有給出任何 值..?

任何想法,我錯了......

上面清楚的事實表明,全球參數$PageUrl或者未初始化或無論如何,它的字符串值是空字符串。

解決方案

您需要設置全局參數$PageUrl用適當的字符串值之前啓動改造。您也可以給它一個默認值,在全球xsl:paramselect屬性,如果默認值選擇這證明了參數未進行初始化和XSLT轉換的發起者通過/

下面是正確的XSLT代碼,要麼使用的$PageUrl默認值或在所述轉化的開始時提供了一種用於此全局參數的值:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

<xsl:param name="pPageUrl" select= 
"'www.stackoverflow.com/questions.aspx?display=18&amp;somethingElse=xyz'"/> 

<xsl:template match="/t"> 
    <xsl:variable name="vQSPart" select= 
    "concat('&amp;', substring-after($pPageUrl,'?'),'&amp;')"/> 

    <xsl:value-of select= 
    "substring-before 
     (substring-after($vQSPart, '&amp;display='), 
     '&amp;') 
    "/> 
</xsl:template> 
</xsl:stylesheet> 

當這種轉化是在任何XML文檔應用(未使用),想要的,正確的結果是生產

18 

當我設置的全局參數的值外的改造到'www.stackoverflow.com/questions.aspx?something=abcd&display=123&somethingElse=xyz',然後再次執行轉換,我再次得到正確的結果:

123 
+0

感謝您的答覆Dimitre,但我發現你的解決方案中有一個問題,你有硬編碼的網址...我使用這種方法的原因是因爲我不需要硬編碼的url.Here顯示= 18所以它可以是什麼,那就是爲什麼我想寫xslt,以便我可以得到的價值...解決方案我試圖它不起作用,但有趣的是,當你把它放在標籤是這樣的:Jack ..它顯示我的頁面url ... – Jack

+0

@Jack:正如我所說(不僅僅是說,而且也是驗證),我的解決方案在全局參數從外部設置時起作用 - 請看我的答案的最後。 –

+0

@Jack:爲了解決您的問題,需要更多的數據。請放入你的XSLT:「''」,告訴我們在引號之間的輸出是什麼。 –

0

我認爲最簡單的顯示QueryString信息的方法是由於ParameterBinding:

在ParameterBindings添加:

<ParameterBinding Name="subsiteLink" Location="ServerVariable(PATH_INFO)" DefaultValue=""/> 

在數據視圖的附加的XSL樣式表:

<xsl:param name="subsiteLink"></xsl:param> 
path_info: <xsl:value-of select="$subsiteLink"/><br/> 

這被簡化顯示數據的方式。

1

的這裏的問題是,參數:

xsl:param name="PageUrl" 

實際上並沒有在網頁上運行。即使你添加了ParameterBinding行(如上所述)。它確實出現在SP Designer中工作,但通過瀏覽器查看時,PageUrl參數返回空值或空值。用於返回當前頁面URL的正確參數是ServerVariable。因此,建立ParemeterBinding像這樣(你需要添加自己的尖括號在這個網站會不喜歡它,如果我在輸入它們):

ParameterBinding Name="PageAddr" Location="ServerVariable(URL)" DefaultValue=""/ 

的PageAddr只是我一個隨機名稱分配給參數,這不會與PageUrl混淆。接下來調用參數在樣式表中,像這樣:

xsl:param name="PageAddr"/

現在你可以使用$ PageAddr任何地方調用參數在你的XSLT代碼。

被警告此參數在SP Designer中不起作用,但可以在瀏覽器中使用。

[有誰知道爲什麼微軟認爲有一個參數在SPD中工作,另一項工作在瀏覽器中是一個好主意?]

0

要初始化全局變量 「PathUrl」 你必須:

1)添加以下行ParameterBindings

<ParameterBinding Name="PageUrl" Location="ServerVariable(QUERY_STRING)" DefaultValue=""/> 

2)添加下面一行到了xsl:樣式表ParameterBindings

<xsl:param name="PageUrl"></xsl:param> 

3)現在你可以使用下面的行顯示的URL參數

<xsl:value-of select="$PageUrl"/> 

其他服務器變量,你可以訪問http://joshmccarty.com/2012/06/using-asp-net-servervariables-in-a-sharepoint-data-view-web-part/

問候:)