Можно ли применить шаблон к параметру xsl перед применением временных параметров к xml

StackOverflow https://stackoverflow.com/questions/3287186

  •  17-09-2020
  •  | 
  •  

Вопрос

У меня есть параметр xsl, который представляет собой строку.Я хочу разобрать эту строку, разделить ее и для каждого значения подстроки применить шаблон в xsl.

Возможно ли это?Если да, не могли бы вы, пожалуйста, посоветовать оптимистичное решение?

Спасибо

Это было полезно?

Решение

Редактировать:Не понял вопроса, извините.

Ответ таков ДА.

Входные данные:

<secuence>Item1 Item2 Item3</secuence>

Таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="secuence/text()" name="secuence">
        <xsl:param name="string" select="."/>
        <xsl:param name="separator" select="' '"/>
        <xsl:if test="$string != ''">
            <xsl:choose>
                <xsl:when test="contains($string,$separator)">
                    <xsl:call-template name="secuence">
                        <xsl:with-param name="string" select="substring-before($string,$separator)"/>
                        <xsl:with-param name="separator" select="$separator"/>
                    </xsl:call-template>
                    <xsl:call-template name="secuence">
                        <xsl:with-param name="string" select="substring-after($string,$separator)"/>
                        <xsl:with-param name="separator" select="$separator"/>
                    </xsl:call-template>
                </xsl:when>
                <xsl:otherwise>
                    <!-- Your desired template -->
                    <Item>
                        <xsl:value-of select="$string"/>
                    </Item>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Результат:

<secuence>
    <Item>Item1</Item>
    <Item>Item2</Item>
    <Item>Item3</Item>
</secuence>

Другие советы

не уверены, что вы имеете в виду, но копирование этого шаблона могут помочь: XSLT - лучший способ разделить и рендерировать текст запятой, как HTML

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top