f



XSLT Delimited Text Node

Is there a way in XSLT to match on numbers that are delimited by a character 
or space in a text node? 


0
emailMK (37)
2/28/2005 8:38:25 PM
comp.text.xml 8781 articles. 0 followers. Post Follow

1 Replies
587 Views

Similar Articles

[PageSpeed] 2


Mike King wrote:

> Is there a way in XSLT to match on numbers that are delimited by a character 
> or space in a text node? 

XSLT 2.0 can do that nicely with the tokenize XPath 2.0 function e.g. 
with the input being

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <data-list>1 2 3 4 5</data-list>
</root>

and the stylesheet

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   version="2.0">

<xsl:output method="xml" indent="yes" />

<xsl:template match="@* | node()">
   <xsl:copy>
     <xsl:apply-templates select="@* | node()" />
   </xsl:copy>
</xsl:template>

<xsl:template match="data-list">
   <xsl:copy>
     <xsl:for-each select="tokenize(., '\s+')">
       <data><xsl:value-of select="." /></data>
     </xsl:for-each>
   </xsl:copy>
</xsl:template>

</xsl:stylesheet>

the result using Saxon 8.3 is


<?xml version="1.0" encoding="UTF-8"?>
<root>
      <data-list>
       <data>1</data>
       <data>2</data>
       <data>3</data>
       <data>4</data>
       <data>5</data>
    </data-list>
</root>


If you want to use XSLT 1.0 then you need to write a recursive template 
taking the string with the numbers as the argument and splitting it up 
using XPath 1.0 functions like substring-before, substring-after etc.


-- 

	Martin Honnen
	http://JavaScript.FAQTs.com/
0
mahotrash (2052)
3/1/2005 2:17:38 PM
Reply: