我有一個SharePoint問題,我需要一些幫助。我創建了一些自定義ItemStyles來格式化內容查詢Web部件(CQWP)的輸出,但我需要在輸出中插入「查看所有」按鈕。XSL - 從路徑字符串中刪除文件名
查看所有需要指向: http://www.site.com/subsite/doclibrary1/Forms/AllItems.aspx
所有個人文件在文檔庫中有鏈接: http://www.site.com/subsite/doclibrary1/FileName.doc
所以我需要的是一些XSL功能,從剝離FileName.doc字符串的結尾。
我試過使用substring-before($ variable,'。')來擺脫.doc,但是我需要找到一種方法來使用substring-after搜索最後一個正斜槓系列並截斷孤立的文件名。
使用@Mads漢森的帖子,這是解決該問題的代碼:
模板ItemStyle.xsl
<xsl:template name="ImpDocs" match="Row[@Style='ImpDocs']" mode="itemstyle">
<xsl:variable name="SafeLinkUrl">
<xsl:call-template name="OuterTemplate.GetSafeLink">
<xsl:with-param name="UrlColumnName" select="'LinkUrl'"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="ViewAllLink">
<xsl:call-template name="OuterTemplate.getCleanURL">
<xsl:with-param name="path" select="@LinkUrl"/>
</xsl:call-template>
</xsl:variable>
<div class="DocViewAll">
<a href="{$ViewAllLink}Forms/AllItems.aspx" title="View all">View All</a>
<!--Any other code you need for your custom ItemStyle here-->
</div>
</xsl:template>
模板ContentQueryMain.xsl
<xsl:template name="OuterTemplate.getCleanURL">
<xsl:param name="path" />
<xsl:choose>
<xsl:when test="contains($path,'/')">
<xsl:value-of select="substring-before($path,'/')" />
<xsl:text>/</xsl:text>
<xsl:call-template name="OuterTemplate.getCleanURL">
<xsl:with-param name="path" select="substring-after($path,'/')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise />
</xsl:choose>
</xsl:template>
這很完美! MOSS正在做一些奇怪的事情,所以我實際上很難將$ path變量傳遞給getURL模板,但希望我可以對其進行分類。 – MrFidge 2010-10-11 09:51:00
不確定你是如何調用的,但''也有'@ select',所以不是我的例子,我把文本值放在元素中,你可以這樣做: ' –
2010-10-11 17:33:24
完美 - 工作,我會在代碼中編輯我的解決方案,謝謝! – MrFidge 2010-10-12 14:03:26