]> granicus.if.org Git - postgis/commitdiff
Escape single quotes in param list when generating raster comments
authorSandro Santilli <strk@keybit.net>
Mon, 20 Feb 2012 13:16:05 +0000 (13:16 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 20 Feb 2012 13:16:05 +0000 (13:16 +0000)
Closes ticket #1588

git-svn-id: http://svn.osgeo.org/postgis/trunk@9237 b70326c6-7e19-0410-871a-916f4a2858ee

doc/xsl/raster_comments.sql.xsl

index 3e50c63f7045075e314ec0bc26737682719b2e0d..baf36f5b93a42725881df427bfb2dc6ac3d46ae0 100644 (file)
@@ -87,6 +87,22 @@ COMMENT ON <xsl:choose><xsl:when test="contains(paramdef/type,'geometry set') or
          </xsl:choose>\r
        </xsl:template>\r
 \r
+       <xsl:template name="escapesinglequotes">\r
+        <xsl:param name="arg1"/>\r
+        <xsl:variable name="apostrophe">'</xsl:variable>\r
+        <xsl:choose>\r
+         <!-- this string has at least on single quote -->\r
+         <xsl:when test="contains($arg1, $apostrophe)">\r
+         <xsl:if test="string-length(normalize-space(substring-before($arg1, $apostrophe))) > 0"><xsl:value-of select="substring-before($arg1, $apostrophe)" disable-output-escaping="yes"/>''</xsl:if>\r
+          <xsl:call-template name="escapesinglequotes">\r
+           <xsl:with-param name="arg1"><xsl:value-of select="substring-after($arg1, $apostrophe)" disable-output-escaping="yes"/></xsl:with-param>\r
+          </xsl:call-template>\r
+         </xsl:when>\r
+         <!-- no quotes found in string, just print it -->\r
+         <xsl:when test="string-length(normalize-space($arg1)) > 0"><xsl:value-of select="normalize-space($arg1)"/></xsl:when>\r
+        </xsl:choose>\r
+       </xsl:template>\r
+\r
        <!--macro to pull out function parameter names so we can provide a pretty arg list prefix for each function -->\r
        <xsl:template name="listparams">\r
                <xsl:param name="func" />\r
@@ -94,9 +110,11 @@ COMMENT ON <xsl:choose><xsl:when test="contains(paramdef/type,'geometry set') or
                        <xsl:if test="count(paramdef/parameter) &gt; 0">args: </xsl:if>\r
                        <xsl:for-each select="paramdef">\r
                                <xsl:choose>\r
-                                       <xsl:when test="count(parameter) &gt; 0"> \r
-                                               <xsl:value-of select="parameter" />\r
-                                       </xsl:when>\r
+                               <xsl:when test="count(parameter) &gt; 0"> \r
+                                       <xsl:call-template name="escapesinglequotes">\r
+                                               <xsl:with-param name="arg1" select="parameter"/>\r
+                                       </xsl:call-template>\r
+                               </xsl:when>\r
                                </xsl:choose>\r
                                <xsl:if test="position()&lt;last()"><xsl:text>, </xsl:text></xsl:if>\r
                        </xsl:for-each>\r