Я не могу использовать tokenize (xslt 2.0)
У меня проблема. Мне нужно разделить значение "Test street \ nStreet 2 \ nStreet3" на основе разделителя "\ n", чтобы получить
<address1>Test street</address3>
<address2>Street 2</address3>
<address3>Street3</address3>
У меня пока есть это:
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="ns0:sObject/ens:BillingStreet"/>
</xsl:call-template>
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="separator" select="'\n'"/>
<xsl:choose>
<xsl:when test="not(contains($text, $separator))">
<Address>
<xsl:value-of select="normalize-space($text)"/>
</Address>
</xsl:when>
<xsl:otherwise>
<Address>
<xsl:value-of select="normalize-space(substring-before($text, $separator))"/>
</Address>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Этодает мне это:
<Aaddress>Test street</Address>
<Aaddress>Street 2</Address>
<Aaddress>Street3</Address>
Я пытался использовать позицию (), но это не сработает:
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="separator" select="'\n'"/>
<xsl:choose>
<xsl:when test="not(contains($text, $separator))">
<xsl:element name="Address{position()}">
<xsl:value-of select="normalize-space($text)"/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:element name="Address{position()}">
<xsl:value-of select="normalize-space(substring-before($text, $separator))"/>
</xsl:element>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text, $separator)"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Выше дает мне:
<Address1>Test street</Address1>
<Address1>Street 2</Address1>
<Address1>Street3</Address1>
Снова,то, что я ищу, это:
<Address1>Test street</Address1>
<Address2>Street 2</Address2>
<Address3>Street3</Address3>
Есть идеи?
Спасибо