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>
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>
次のコードは、投稿した URL (またはドキュメント ライブラリの任意のビュー) からドキュメント ライブラリの名前を取得します。
String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();
この記事で説明する方法を使用して、XSL から .NET コードを呼び出すことができます。
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"/>
set VIEWFLAG=1 (it should be in the properties windows)
Find this line and modify if you want Filter the webpart list
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row" />
Change it to following
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[(@CustomerNo=$DocLibName)]"/>
You can use this to display
<xsl:value-of select="$DocLibName"> <br/>
<xsl:value-of select="$PageUrl"/><br/>
ドキュメント ライブラリ名の長さは不明であるため、標準substring(string, int, int)
関数を使用してもあまり効果がありません。
ただし、連携して使用できる機能が 2 つありsubstring-after(string, string)
ますsubstring-before(string, string)
。サイト名が「フォーム」でない限り、 を使用して部分的な文字列を取得できますsubstring-before([URL], "/Forms")
。残りの部分については...サイトの名前にすぐにアクセスできない場合はまだ面倒ですが、そのオプションを削除しても、URLの長さの複雑な計算よりもはるかに簡単です. 基本的にsubstring-after([string], "/")
、最後のスラッシュが飛び出すまで継続的に実行する必要があります。