У меня проблема SharePoint, с которой мне нужна помощь. Я создаю некоторые пользовательские элементы ItemStyles для форматирования вывода веб-части запроса контента (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, но затем мне нужно найти способ использования подстроки после поиска LAST-косой черты в серии и обрезать осироченное имя файла.
Использование пост @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
не уверен, как вы вызываете, но '' также имеет '@ select', поэтому вместо моего примера, где я помещаю текстовое значение внутри элемента, вы можете сделать это' ' –
perfect - это сработало, я отредактирую код для своего решения и спасибо! – MrFidge