Как обработать последовательность или массив строк в файле ".xsl"? - PullRequest
1 голос
/ 10 мая 2011

У меня есть последовательность / массив строк в xsl stlesheet.

например, varList когда я печатаю значение вышеуказанной переменной следующим образом

<xsl:value-of select="$varList"/>

печатается следующим образом

varList="hw.co.gdh gd.kj.xhd bh.ko.sag hf.sj.kjh"

Теперь я должен получить каждую строку отдельно от вышеуказанной переменной.

т.е. "hw.co.gdh", "gd.kj.xhd" в отдельности.

Как я могу это сделать? есть ли возможность применить цикл <xsl:for-each> или что-то еще?

Я использую версию = "1.0" из xsl.

1 Ответ

0 голосов
/ 10 мая 2011

Я покажу вам, как разбивать строки в XSLT 1.0 на основе предоставленной рекурсивной функции здесь .

ВХОД

<root>
 <varlist>a.a.a b.b.b c.c.c</varlist>
</root>

XSL

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/root">
  <xsl:variable name="varList" select="varlist" />
  <xsl:variable name="nodelist">
   <xsl:call-template name="output-tokens">
    <xsl:with-param name="list"><xsl:value-of select="$varList"/></xsl:with-param>
   </xsl:call-template>
  </xsl:variable>
  <nodelist>
   <xsl:copy-of select="$nodelist"/>
  </nodelist>
 </xsl:template>

<xsl:template name="output-tokens">
 <xsl:param name="list" /> 
  <xsl:variable name="newlist" select="concat(normalize-space($list), ' ')" /> 
  <xsl:variable name="first" select="substring-before($newlist, ' ')" /> 
  <xsl:variable name="remaining" select="substring-after($newlist, ' ')" /> 
 <id>
     <xsl:value-of select="$first" /> 
 </id>
 <xsl:if test="$remaining">
    <xsl:call-template name="output-tokens">
            <xsl:with-param name="list" select="$remaining" /> 
    </xsl:call-template>
 </xsl:if>
</xsl:template>

OUTPUT

<nodelist>
 <id>a.a.a</id>
 <id>b.b.b</id>
 <id>c.c.c</id>
</nodelist>

ПРИМЕЧАНИЕ , что я не сделал ничего, кроме вызова шаблона output-tokens.

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