2016-06-27 3 views
1

Я пытался придумать шаблон на преобразовании этого:XSLT: Шаблон для разделения строк на основе разделителей

<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 и I пытались придумать шаблон для достижения нужного результата. Я пробовал изменить шаблон здесь How to split strings, но я не могу достичь того, что мне нужно. Заранее спасибо за помощь.

ответ

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> 
+1

Большое вам спасибо за это ... он работал с небольшой модификацией. –

+0

@ElmerCalonzo, проблем нет. Приветствия. –

Смежные вопросы