gpt4 book ai didi

xslt - XSL-从路径字符串中删除文件名

转载 作者:行者123 更新时间:2023-12-05 00:06:00 24 4
gpt4 key购买 nike

我遇到了一个SharePoint问题,需要帮助。我正在创建一些自定义ItemStyles来格式化内容查询Webpart(CQWP)的输出,但是我需要在输出中插入一个“查看全部”按钮。

查看所有需要指向:
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的方法来搜索系列中的LAST正斜杠并截断孤立的文件名。

使用@Mads Hansen的帖子,这是解决问题的代码:

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>

最佳答案

执行此样式表将产生:http://www.site.com/subsite/doclibrary1/

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">

<xsl:call-template name="getURL">
<xsl:with-param name="path">http://www.site.com/subsite/doclibrary1/FileName.doc</xsl:with-param>
</xsl:call-template>
</xsl:template>

<xsl:template name="getURL">
<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="getURL">
<xsl:with-param name="path" select="substring-after($path,'/')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise />
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

当字符串中包含“/”字符时,getURL模板将对其进行递归调用。虽然仍然有“/”字符,但它会在斜杠前吐出值,然后调用自身。当到达最后一个时,它停止。

关于xslt - XSL-从路径字符串中删除文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com