как преобразовать значения через запятую в новые значения в XSL - PullRequest
0 голосов
/ 17 марта 2020

У меня запятая в том смысле, что я хочу преобразовать их в строковые значения: sample:

11,22,33,44,55

Я хочу преобразовать их в

 11
 22
 33
 44

Я пробовал эту функцию

oraext:create-nodeset-from-delimited-string

но это добавляет пробел между значениями вместо нового переноса строки.

с использованием xsl. есть ли функция, которая делает желаемый вывод

1 Ответ

1 голос
/ 17 марта 2020

В XSLT-1.0 вы можете использовать функцию fn:translate(...) для преобразования всех запятых в новые строки:

<xsl:value-of select="translate(value,',','&#xa;')" />

Это не удаляет начальные и конечные пробелы между запятыми.


В XSLT-2.0, с другой стороны, вы также можете удалить те, которые имеют регулярное выражение и функцию fn:replace(...):

<xsl:value-of select="replace(value,'\s*,\s*','&#xa;')" />

Если вы попытаетесь чтобы создать HTML вывод, как упоминалось в комментарии выше, вы можете использовать этот рекурсивный шаблон, чтобы завершить sh каждое число с тегом <BR />:

<xsl:template match="/*" name="strItem">
    <xsl:param name="str" select="concat(value,',')" />
    <xsl:value-of select="concat(normalize-space(substring-before($str,',')),'&lt;br />')" disable-output-escaping="yes" />
    <xsl:if test="normalize-space(substring-after($str,','))">
        <xsl:call-template name="strItem">
            <xsl:with-param name="str" select="substring-after($str,',')" />
        </xsl:call-template>
    </xsl:if>
</xsl:template>

с элементом <value>11,22,33,44,55</value> (не на уровне root) -

11<br />22<br />33<br />44<br />55<br />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...