[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: xsl & unix functions
I want <function role="unix">select</function> and <ulink role="unix" url="foo">bar</ulink> to be rendered with a link to the SUS page. here is what I came up with so far: <xsl:param name="unix.top" select="'http://www.opengroup.org/onlinepubs/007904975'"/> <xsl:template match="function[@role='unix']"> <a class="{@role}"><xsl:attribute name="href"> <xsl:value-of select="$unix.top"/> <xsl:text>/functions/</xsl:text> <xsl:value-of select="."/> <xsl:text>.html</xsl:text> </xsl:attribute> <xsl:apply-imports/> </a></xsl:template> <xsl:template match="ulink[@role='unix']"> <a class="{@role}"><xsl:attribute name="href"> <xsl:value-of select="$unix.top"/> <xsl:text>/</xsl:text> <xsl:value-of select="@url"/> </xsl:attribute> <xsl:apply-templates/> </a></xsl:template> 1. this works, but is not too good because this is HTML-specific. I want the element wrapped in <ulink> and then XSL re-applied. (to avoid infinite recursion, one would have to strip 'role="unix"' from the function element before re-application) 2. the exact same thing has to be done with variables, but <xsl:template match="function[@role='unix'] or varname[@role='unix']"> does not work. what do I do? 3. <filename role="unix">sys/socket.h</filename> must be rendered with a link to "$unix.top"/basedefs/syssocket.h.html i.e., I need to strip "/" from "sys/socket.h"? also, I want it to be rendered as if it were written <filename><sys/socket.h></filename> (but I do not want to have to enter the </> inside <filename>) 4. suppose the URL cannot be inferred from the element contents easily, instead I have a table: a file "map" where odd lines are link content and even lines are URLs. I guess I need to read the file into a hash table and do somthing like this: (defparameter *map* (make-hash-table :test 'equal)) ;; read map: (with-open-file (in "map") (loop for s1 = (read-line in nil nil) for s2 = (read-line in nil nil) while (and s1 s2) do (setf (gethash s1 *map*) s2))) ;; process <function role="clhs">FOO</function> (let ((destination (gethash <xsl:value-of select="."/> *map*))) (if destination <ulink url="destination"> (apply-imports <function><xsl:value-of select="."/></function>) </ulink> (error "unknown function"))) how do I express this in XSL? thanks! -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.iris.org.il> <http://www.savegushkatif.org> <http://www.dhimmi.com/> <http://www.honestreporting.com> If you try to fail, and succeed, which have you done?
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]