Re: [xsl] XSLT processor and substring-after

Subject: Re: [xsl] XSLT processor and substring-after
From: JBryant@xxxxxxxxx
Date: Wed, 13 Apr 2005 14:48:00 -0500
With the following source XML (yours with the namespace removed for 
simplicity's sake):

<?xml version="1.0" encoding="UTF-8"?>
<boundedBy>
  <Box>
    <coordinates>89,43 90,43.5</coordinates>
  </Box>
</boundedBy>

I got the following stylesheet to work with Saxon 8:

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

  <xsl:template match="/">
    <xsl:variable name="coords1" select="/boundedBy/Box/coordinates"/>
    <out>
      <lowerCorner>
        <xsl:value-of select="substring-before($coords1, ' ')"/>
      </lowerCorner>
      <upperCorner>
        <xsl:value-of select="substring-after($coords1,' ')"/>
      </upperCorner>
    </out>
  </xsl:template>

</xsl:stylesheet>

To produce the following output:

<?xml version="1.0" encoding="UTF-8"?>
<out>
  <lowerCorner>89,43</lowerCorner>
  <upperCorner>90,43.5</upperCorner>
</out>

My guess is that you've not properly specified the path in the select part 
of the variable or that your processor has a problem. Perhaps you should 
shows us more of the source document, so that we can help you develop a 
better path or help you determine that the problem is your processor.

HTH

Jay Bryant
Bryant Communication Services
(presently consulting at Synergistic Solution Technologies)





"N Zhou" <zhou_naijun@xxxxxxxxxxx> 
04/13/2005 01:57 PM
Please respond to
xsl-list@xxxxxxxxxxxxxxxxxxxxxx


To
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
cc

Subject
[xsl] XSLT processor and substring-after






Hi,

I'm using XML::XSLT Perl module to transform XML data:
<gml:boundedBy>
  <gml:Box>
      <gml:coordinates>89,43 90,43.5</gml:coordinates>
</gml:Box>
</gml:boundedBy>

I want to split the 89,42 90, 43.5 to two substrings as :
<gml:boundedBy>
  <gml:Envelope>
      <gml:lowerCorner>89,43</gml:lowerCorner>
      <gml:upperCorner>90,43.5</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>

I tried substring-after but didn't get results (XML::XSLT returned blank):
        <xsl:variable name="coords1" 
select="gml:boundedBy/gml:Box/gml:coordinates"/>
        <gml:lowerCorner>
           <xsl:value-of select="substring-before($coords1, ' ')"/>
        </gml:lowerCorner>
        <gml:upperCorner>
            <xsl:value-of select="substring-after($coords1,' ')"/>
        </gml:upperCorner>

Could anyone tell me why I cannot split the string: are there errors in my 

XSL; or, the module XML::XSLT does not support substring-after (it uses 
XPath1.3)? Anyone can recommend me another Perl module of XSLT processor?

Thank you very much!

n zhou

Current Thread