如何从URL cqwp获取文档库名称。例如,
http:///sites/site1/DocLib/Forms/AllItems.aspx
我知道xsl
有子串函数<xsl:param name="DocLibName">
select=substring(url) or whatever the code should be
</xsl:param>
答案 0 :(得分:1)
以下代码将根据您发布的URL(或文档库中的任何视图)为您提供文档库的名称。
String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();
您可以使用this article中描述的方法从XSL调用.NET代码
答案 1 :(得分:0)
使用标准的substring(string, int, int)
函数不会让你走得太远,因为我希望文档库名称的长度是未知的。
但是,您可以使用两个功能,substring-after(string, string)
和substring-before(string, string)
。只要您的站点名称不是“表单”,就可以使用substring-before([URL], "/Forms")
检索部分字符串。对于其他...如果你没有立即访问该网站的名称仍然会很麻烦,但即使删除该选项,它仍然比URL长度的复杂计算容易得多。你基本上必须不断执行substring-after([string], "/")
,直到弹出最后一个斜线。
答案 2 :(得分:0)
http://msdn.microsoft.com/en-us/library/dd583143(office.11).aspx
<xsl:variable name="DocLibName" select="substring-before(substring-after($PageUrl, '/Forms/'), '/')" />
<xsl:param name="PageUrl"/>
设置VIEWFLAG = 1(它应该在属性窗口中)
找到此行并修改是否要过滤webpart列表
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />
将其更改为以下
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[(@CustomerNo=$DocLibName)]"/>
您可以使用它来显示
<xsl:value-of select="$DocLibName"> <br/>
<xsl:value-of select="$PageUrl"/><br/>