xsl-list
[Top] [All Lists]

Re: getting the last value of a nodeset

2005-02-06 06:05:25
Prasad Akella wrote:

hi

I am sorry i do not want to evaluate the xpath expression. i would like to have 
the last segment of the xpath statement as i would be using that same string to 
name a control in my xhtml page. thus a control in an xhtml page and the node 
in an xml document would be matched and i can put the value thus entered from 
the user browser into the respective tag. thus i have to get the last string 
which represents a node in an xml document and name an xhtml control with the 
same. i hope i am clear

with regards,
Prasad
aha, sorry didnt mean to change your question....sometimes folks get confused

this is easier.....u need a tail like function

TEST XML

<?xml version="1.0" encoding="UTF-8"?>
<test xmlns:xforms='http://www.example.org/xforms'>

   <xforms:bind nodeset="/Exam/ExamMetaData/Title"/>

</test>


TEST XSLT

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

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

 <xsl:variable name="variable" select="/test/xforms:bind/@nodeset"/>

<xsl:template match="/">

 nodeset: <xsl:value-of select="$variable"/>

 last segment name: <xsl:call-template name="tail">
   <xsl:with-param name="string" select="$variable"/>
 </xsl:call-template>

</xsl:template>

<xsl:template name="tail">
<xsl:param name="string" select="."/>
<xsl:choose>
   <xsl:when test="substring-after($string,'/')">
       <xsl:call-template name="tail">
<xsl:with-param name="string" select="substring-after($string,'/')"/>
       </xsl:call-template>
   </xsl:when>
 <xsl:otherwise>
   <xsl:value-of select="$string"/>
 </xsl:otherwise>
</xsl:choose>
</xsl:template>


</xsl:stylesheet>


should result in printout of nodeset value and last segment value

if you want to reuse then just wrap call template in a variable;


<xsl:variable name="desiredresult">

<xsl:call-template name="tail">
   <xsl:with-param name="string" select="$variable"/>
 </xsl:call-template>

</xsl:variable>

though be careful with whitespace....

gl, Jim Fuller

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>