xml - XSLT:基于定界符拆分字符串的模板

标签 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 ,但我无法实现我需要的。预先感谢您的帮助。

最佳答案

使用这个模板:

<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/

相关文章:

c++ - "save"的设计模式

xml - 如何在 clojure.data.zip 中使用 xml-> 获取嵌套节点?

xml - XSL 根据属性重命名元素

xml - XSLT - 有没有办法附加到用 <xsl :attribute>? 添加的属性

xml - 更改上下文节点的 XSLT 指令/函数列表?

xml - 使用 xmlsec1 验证 Windows 8 应用内购买收据

xml - Biztalk 映射 : Grouping different nodes into a list

xml - 如果节点有某些子节点,则拆分该节点

javascript - 使用 Java 在样式表中展开全部或全部折叠

java - 如何在 XSLT 中添加命名空间名称及其值?