我一直在努力想出一个模板来改变这个:
<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 ,但我无法实现我需要的。预先感谢您的帮助。
最佳答案
使用这个模板:
<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>
关于xml - XSLT:基于定界符拆分字符串的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064101/