XSLT:基于分隔符拆分字符串的模板

时间:2016-06-27 22:19:07

标签: xml xslt xslt-1.0

我一直试图想出一个关于改变它的模板:

<text>Smith, John / Smith, Dina / Smith, Susan</text>

成:

<rec>
    <RecNo>1</RecNo>
    <name>Smith, John</name>
</rec>
<rec>
    <RecNo>2</RecNo>
    <name>Smith, Dina</name>
</rec>
<rec>
    <RecNo>3</RecNo>
    <name>Smith, Susan</name>
</rec>

我是XSLT的新手,我一直在努力想出一个模板来实现所需的结果。我在这里尝试修改模板How to split strings,但我无法实现我所需要的。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用此模板:

<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="text()" name="split">
    <xsl:param name="pText" select="."/>
    <xsl:param name="index" select="1"/>
    <xsl:if test="string-length($pText)">
      <rec>
        <RecNo>
          <xsl:value-of select="$index"/>
        </RecNo>
        <name>
          <xsl:value-of select="substring-before(concat($pText,'/'),'/')"/>
        </name>
      </rec>
      <xsl:call-template name="split">
        <xsl:with-param name="pText" select="substring-after($pText, '/')"/>
        <xsl:with-param name="index" select="$index + 1"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>