2013-08-05 4 views
1

Использование XPath 1.0 в XSLT SharePoint 2013, у меня есть две цели:XSLT: XPath 1,0 подстрока

  1. Для извлечения 'Библиотека имени' от:

    /path/to/library/could/be/any/length/Library Name/file.extension

  2. Чтобы извлечь идентификатор документа QYZM2HKWQCSZ- 3-3 из следующих функций:

    http://sharepoint01/sites/temp/_layouts/15/DocIdRedir.aspx?ID=QYZM2HKWQCSZ-3-3, QYZM2HKWQCSZ-3-3

Как извлечь нужные строки?

OAN, по какой-либо причине столбец идентификатора документа возвращает полный путь к ресурсу, а не только идентификатор.

Любые предложения, как получить идентификатор только (чтобы избежать предварительной обработки подстроки)?

+0

Недостаточно указать строку ввода и желаемую строку вывода: один пример не является спецификацией проблемы. Например, в (1) вы можете следовать за последним, но одним компонентом пути, или частью, которая следует за частью «длина» и т. Д. –

ответ

1
  1. Невозможно использовать простой XPath 1.0, если вы не можете найти какой-либо дополнительный шаблон в пути.
  2. Похоже, что установлен шаблон ?ID=, а также двоеточие после идентификатора. Если это так, вы можете использовать substring-after(substring-before(., ','), '?ID='). Замените контекст . некоторым выражением XPath, выбирая строку.
2

Для (1) напишите рекурсивный шаблон следующим образом. Передайте входную строку в качестве параметра.

(а), если not(contains(substring-after($input, '/'), '/')) затем вернуть substring-before($input, '/')

(б) в противном случае, сделать рекурсивный вызов, проходящий (substring-after($input, '/')) в качестве параметра.

(c) добавить логику обработки ошибок, чтобы убедиться, что вы завершаете, если строка ввода не содержит '/'.

Смежные вопросы