[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: URL decomposition
MarkH@xxxxxxxx writes: > At last, a question for the list which seems to go beyond newbiness! > > Can you think of a way to decompose a URL? > > I want to take something like: http://www.agilic.com/purchase.htm and end up > with purchase.htm. I've managed to use some of the string manipulation > capabilities of XPath to do things like change the file suffix from ".htm" > to ".xsl", but with only "substring-after()" and nothing I can find to loop > over the slash characters I'm not sure how to do this in XSLT. > > For example, if there were something like <xsl:while> I could do something > like: > > <xsl:while test="contains($xslfile,'/')"> > <xsl:variable name="xslfile"><xsl:value-of > select="substring-after('/',$xslfile)"/></xsl:variable> > </xsl:while> You have recursion.... :-) This template get's a filename and gives back the directory part of it. Giving back the filename part is achieved along the same line You call it somehow like <xsl:call-template name="strip"> <xsl:with-param name="relfile">foo/bar/baz.xml</xsl:with-param> </xsl:call-template> <xsl:template name="strip"> <xsl:param name="reldir"/> <xsl:param name="relfile"/> <xsl:choose> <xsl:when test="contains($relfile, '/')"> <xsl:call-template name="strip"> <xsl:with-param name="relfile"> <xsl:value-of select="substring-after($relfile,'/')"/> </xsl:with-param> <xsl:with-param name="reldir"> <xsl:value-of select="concat($reldir, substring-before($relfile,'/'), '/')"/> </xsl:with-param> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$reldir"/> </xsl:otherwise> </xsl:choose> </xsl:template> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|