如何从URL cqwp中获取文档库名称。例如,如何从URL中获取文档库名称
http:///sites/site1/DocLib/Forms/AllItems.aspx
我知道有使用XSL
<xsl:param name="DocLibName">
select=substring(url) or whatever the code should be
</xsl:param>
如何从URL cqwp中获取文档库名称。例如,如何从URL中获取文档库名称
http:///sites/site1/DocLib/Forms/AllItems.aspx
我知道有使用XSL
<xsl:param name="DocLibName">
select=substring(url) or whatever the code should be
</xsl:param>
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(它应该在属性风中OWS)
找到这一行和修改,如果你想过滤的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/>
使用标准substring(string, int, int)
功能不会让你很远,因为我希望字符串函数的文档库名称的长度是未知的。
但是,您可以一起使用两种功能,substring-after(string, string)
和substring-before(string, string)
。只要您的网站名称不是“表单”,您就可以使用substring-before([URL], "/Forms")
检索部分字符串。其余......如果您没有立即访问网站名称,它仍然很麻烦,但即使删除该选项,它仍然比网址长度中的复杂计算容易得多。您基本上必须不断执行substring-after([string], "/")
,直到弹出最后一个斜杠。
下面的代码会给您的文档库的名称从您发布的URL(或在文档库中的任何视图)
String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();
您可以使用this article描述的方法来调用.NET来自XSL的代码
Hugo, 1.感谢您的帮助,但 a。这是xsd的代码吗?如果是的话,我在哪里放置代码? b。如果没有,那么你可以给我xsd代码从URL中找出文档库名称(获取当前文档的libray名称,如果有其他方法,它不必从url中获取它) – Langoria 2010-06-03 20:40:39
您可以从您的.NET xsl代码。我用链接编辑了我的答案。为什么downvote btw? – 2010-06-04 13:25:20
感谢ccomet。我会试一试,我会发布最终的代码。 谢谢/ Ria – Langoria 2010-06-03 18:35:48