我一直试图想出一个关于改变它的模板:
<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,但我无法实现我所需要的。在此先感谢您的帮助。
答案 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>