【问题标题】:XSLT - split string using specific characterXSLT - 使用特定字符分割字符串
【发布时间】:2017-03-21 20:36:10
【问题描述】:

我有一个这样的xml,

<doc>
    <para>A brief 23 spell* of hea#vy rain* forc^%ed an early+ lunch* 98@with nine</para>
</doc>

我需要从文本中出现的每个 * 中拆分文本字符串..

所以预期的输出应该是,

<doc>
    <para>A brief 23 spell</para>
    <para>of hea#vy rain</para>
    <para>forc^%ed an early+ lunch</para>
    <para>98@with nine</para>
</doc>

我为此编写了以下逻辑,

我为此写了以下 xslt,

<xsl:template match="para"> 
        <xsl:analyze-string select="text()" regex="[A-Za-z0-9_.]\*">
            <xsl:matching-substring>
                <para>
                    <xsl:value-of select="."/>
                </para>
            </xsl:matching-substring>
        </xsl:analyze-string>
    </xsl:template>

谁能建议我如何使用 xslt 做到这一点?

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    个人喜好我会选择函数tokenize():

    总结:此函数将 $input 字符串分解为字符串序列,将匹配 $pattern 的任何子字符串视为分隔符。不返回分隔符本身。

    <xsl:template match="para"> 
      <xsl:for-each select="tokenize(.,'\*')">
        <para>
          <xsl:sequence select="."/>
        </para>
      </xsl:for-each>
    </xsl:template>
    

    结果:

    <para>A brief 23 spell</para>
    <para> of hea#vy rain</para>
    <para> forc^%ed an early+ lunch</para>
    <para> 98@with nine</para>
    

    去除前导和尾随空格使用:

    <xsl:sequence select="normalize-space(.)"/>
    

    【讨论】:

      猜你喜欢
      • 2019-11-03
      • 1970-01-01
      • 2019-03-19
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 2015-12-04
      相关资源
      最近更新 更多