如何处理“.xsl”中的字符串序列或数组文件?

发布于 2024-11-06 07:01:27 字数 399 浏览 0 评论 0原文

我在 xsl stlesheet 中有字符串序列/数组。

例如变量列表 当我按如下方式打印上述变量的值时,

<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 的版本=“1.0”。

I have sequence/array of string in xsl stlesheet.

e.g varList
when I print the value of above variable as following

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

It prints as follows which is

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

Now I have to get each string separatly from the above varibale.

i.e "hw.co.gdh" , "gd.kj.xhd" separeted.

How I can do it? is there any option of applying <xsl:for-each> loop or somthing else?

I m using version="1.0" of xsl.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最美的太阳 2024-11-13 07:01:27

我向您展示如何根据提供的递归函数在 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>

输出

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

注意除了调用模板output-tokens之外,我没有做任何其他事情。

I show you a demonstration on how to split the strings in XSLT 1.0 based on recursive function provided here.

INPUT

<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>

NOTE that I didn't do anything more than calling the template output-tokens.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文