Sharepoint XSL - разбить строку на составные части - PullRequest
2 голосов
/ 13 декабря 2010

Я использую столбец сайта "choice" с включенной опцией множественной проверки, чтобы пользователи могли пометить элемент списка несколькими вариантами из столбца.

В этом столбце включается функция дизайна ввеб-часть запроса контента - где выбор столбца добавляется для создания имени файла изображения.

  • Choice1
  • Choice2
  • Choice3
  • Choice4

становится

<img src="http://mysite/content-Choice1.jpg />

Проблема, с которой я столкнулся, заключается в том, что синтаксический анализатор XSL получает строку с точками с запятой (;) и хешами (#), разделяющими значения выбора.Если бы были отмечены все 4 опции, строка, поданная в синтаксический анализатор XSLT, была бы:

;#Choice1;#Choice2;#Choice3;#Choice4

Как я могу работать со строкой и разделять каждый выбор в свою собственную переменную XSL?

Iпробовал различные функции подстроки перед, но у меня ничего не получается.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Поскольку XPath 1.0 не поддерживает функцию tokenize(), вам придется выполнять всю работу самостоятельно. Например, вы можете сгенерировать элементы <img> рекурсивно из вариантов:

<xsl:template name="RecurseConvertChoicesToImages">
    <xsl:param name="choices" />

    <xsl:variable name="token"
        select="substring-before($choices, ';#')" />
    <xsl:variable name="nextToken"
        select="substring-after($choices, ';#')" />

    <xsl:if test="$token">
        <img src="http://mysite/content-{$token}.jpg" />
    </xsl:if>
    <xsl:if test="$nextToken">
        <xsl:call-template name="RecurseConvertChoicesToImages">
            <xsl:with-param name="choices" select="$nextToken" />
        </xsl:call-template>
    </xsl:if>
</xsl:template>
2 голосов
/ 14 декабря 2010

Я бы порекомендовал использовать JavaScript для разбора строки и соответственно отображения изображения с использованием JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...