XSL:如何在多个重复的 ~ 字符之间选择子字符串作为分隔符



请帮忙。 需要能够选择/提取位于相同重复~字符之间的字符串。

例:狗逃~从栅栏~跑过马路~进入车流,但没有~受伤谢天谢地。 我们~很高兴狗是安全的。

按照这种格式AAA=BBBBB=CCCCCCCCCCCCCCCC=D=FFFFF=GG=H,尝试应用以下方法,但无法使用此方法提取:

<xsl:value-of select="substring-before(
            substring-after ($vari, , '=')
           , '=')"/> 

对于BBBBB
或:

<xsl:value-of select="substring-before(
             substring-after ( substring-after ($vari,  '='),  '=')
             , '=')"/>

对于中交中交

任何帮助将不胜感激。

此转换

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:strip-space elements="*"/>
  <xsl:template match="t">
    <xsl:param name="pIndex" select="0"/>
    <xsl:variable name="vToken" select=
    "substring-before(substring(concat(.,'~'), $pIndex+1), '~')"/>
    <xsl:variable name="vnewIndex" select="$pIndex+string-length($vToken)+1"/>
    <token>
      <xsl:value-of select="$vToken"/>
    </token>
    <xsl:apply-templates select="self::node()[not($vnewIndex >= string-length(.))]">
      <xsl:with-param name="pIndex" select="$vnewIndex"/>
    </xsl:apply-templates>
  </xsl:template>
</xsl:stylesheet>

应用于提供的 XML 文档时

<t>The dog escaped ~ from the fence ~ and ran across the road ~ into traffic, but did not ~ get hurt thankfully. We are ~ very happy the dog is safe.</t>

产生所需的正确结果

<token>The dog escaped </token>
<token> from the fence </token>
<token> and ran across the road </token>
<token> into traffic, but did not </token>
<token> get hurt thankfully. We are </token>
<token> very happy the dog is safe.</token>

相关内容

  • 没有找到相关文章

最新更新