[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: recursive string escaping and custom namespace
i'm writing a stylesheet to convert docbook files into wiki text and at the moment i'm trying to write an extensible escaping function but having trouble with the custom namespace usage ... in other words, i want to take some arbitrary text (like in <para> tags which could be just about anything) and make sure i escape all the reserved wiki stylings so if i had: <para>blah lah __function blah</para> i'd escape it to: <para>blah lah %%__%%function blah</para> rather than just calling out to replace-string for every such format ('__' -> '%%__%%'), i'm trying to hide all of this wiki stuff in a sep file i'm using this for the actual replace-string function: http://aspn.activestate.com/ASPN/Cookbook/XSLT/Recipe/65426 and the attached .xsl is my attempt at writing a wiki escape function ... idea being i would use it like: <xsl:template match="para"> <xsl:call-template name="dokuwiki-escape"> <xsl:with-param name="text" select="normalize-space(.)" /> </xsl:call-template> ... </xsl:template> i know i'm missing something basic because i just started learning xsl yesterday ;x -mike
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="text" indent="no" encoding="UTF-8" /> <xsl:strip-space elements="*" /> <xsl:include href="replace-string.xsl" /> <dokuwiki:stylesheet xmlns:dokuwiki="http://www.dokuwiki.org/" version="1.0"> <dokuwiki:wiki_format> <dokuwiki:format>**</dokuwiki:format> <dokuwiki:format>//</dokuwiki:format> <dokuwiki:format>__</dokuwiki:format> <dokuwiki:format>''</dokuwiki:format> <dokuwiki:format>\\</dokuwiki:format> </dokuwiki:wiki_format> </dokuwiki:stylesheet> <!-- escape dokuwiki style formatting by quoting all formats with %%: __foo -> %%__%%foo --> <xsl:template name="dokuwiki-escape"> <xsl:param name="text" /> <xsl:param name="idx">1</xsl:param> <xsl:variable name="new_text"> <xsl:call-template name="replace-string"> <xsl:with-param name="text" select="$text" /> <xsl:with-param name="from" select="dokuwiki:format[$idx]" /> <xsl:with-param name="to" select="'%%' + dokuwiki:format[$idx] + '%%'" /> </xsl:call-template> </xsl:variable> <xsl:choose> <xsl:when test="$idx < count(dokuwiki:format)"> <xsl:call-template name="dokuwiki-escape"> <xsl:with-param name="text" select="$new_text" /> <xsl:with-param name="idx" select="$idx + 1" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$new_text" /> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]