Как получить имя библиотеки документов из URL - PullRequest
1 голос
/ 03 июня 2010

Как получить имя библиотеки документов из 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>

Ответы [ 3 ]

1 голос
/ 03 июня 2010

Следующий код даст вам имя вашей библиотеки документов из URL-адреса, который вы разместили (или из любого представления в вашей библиотеке документов)

String pattern = ".*/(?<listStaticName>.+)/[^\\.]+\\.aspx";
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(DefaultViewUrl);
String listStaticName = matches[0].Groups["listStaticName"].ToString();

Вы можете использовать метод, описанный в этой статье , для вызова кода .NET из XSL

0 голосов
/ 13 июля 2010
  1. Несколько хороших ссылок.

http://msdn.microsoft.com/en-us/library/dd583143(office.11).aspx

  1. Добавьте эти две строки

<xsl:variable name="DocLibName" select="substring-before(substring-after($PageUrl, '/Forms/'), '/')" />

<xsl:param name="PageUrl"/>

  1. установить VIEWFLAG = 1 (должно быть в окнах свойств)

  2. Найдите эту строку и измените ее, если хотите.

<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/>

0 голосов
/ 03 июня 2010

Использование стандартной функции substring(string, int, int) не приведет вас слишком далеко, потому что я ожидаю, что длина имени библиотеки документов неизвестна.

Однако есть две функции, которые вы можете использовать совместно, substring-after(string, string) и substring-before(string, string). Пока имена вашего сайта не являются «формами», вы можете получить частичную строку, используя substring-before([URL], "/Forms"). В остальном ... это все равно будет проблематично, если у вас нет немедленного доступа к имени сайта, но даже если убрать эту опцию, это все равно будет намного проще, чем сложные вычисления длины URL. В основном вам придется постоянно выполнять substring-after([string], "/") до тех пор, пока вы не получите последний слэш.

...