[postgis-tickets] [SCM] PostGIS branch stable-3.3 updated. 3.3.1-14-ga489810f5
git at osgeo.org
git at osgeo.org
Sun Oct 16 17:22:08 PDT 2022
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, stable-3.3 has been updated
via a489810f55c35bef523f9117461425c5345e79d3 (commit)
via 7e43c16c8aa421102f0cd6017967ce9b8f34291a (commit)
from a0e206a9d956d488a30126b019cc91a156977e7d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a489810f55c35bef523f9117461425c5345e79d3
Author: Regina Obe <lr at pcorp.us>
Date: Sun Oct 16 20:21:59 2022 -0400
Flag some functions as aggregates, not flagged before
diff --git a/doc/reference_raster.xml b/doc/reference_raster.xml
index d2f4a3bde..b42b28590 100644
--- a/doc/reference_raster.xml
+++ b/doc/reference_raster.xml
@@ -2474,7 +2474,7 @@ FROM baz;
<funcsynopsis>
<funcprototype>
- <funcdef>SETOF raster <function>ST_Retile</function></funcdef>
+ <funcdef>setof raster <function>ST_Retile</function></funcdef>
<paramdef><type>regclass </type> <parameter>tab</parameter></paramdef>
<paramdef><type>name </type> <parameter>col</parameter></paramdef>
<paramdef><type>geometry </type> <parameter>ext</parameter></paramdef>
@@ -7881,7 +7881,7 @@ rid | exclude_nodata | include_nodata
<funcsynopsis>
<funcprototype>
<funcdef>bigint <function>ST_CountAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>sample_percent</parameter></paramdef>
@@ -7889,14 +7889,14 @@ rid | exclude_nodata | include_nodata
<funcprototype>
<funcdef>bigint <function>ST_CountAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bigint <function>ST_CountAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
</funcprototype>
@@ -7971,7 +7971,7 @@ FROM foo;
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
- <funcdef>SETOF record <function>ST_Histogram</function></funcdef>
+ <funcdef>setof record <function>ST_Histogram</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef choice="opt"><type>integer </type> <parameter>nband=1</parameter></paramdef>
<paramdef choice="opt"><type>boolean </type> <parameter>exclude_nodata_value=true</parameter></paramdef>
@@ -7981,7 +7981,7 @@ FROM foo;
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_Histogram</function></funcdef>
+ <funcdef>setof record <function>ST_Histogram</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>integer </type> <parameter>bins</parameter></paramdef>
@@ -7990,7 +7990,7 @@ FROM foo;
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_Histogram</function></funcdef>
+ <funcdef>setof record <function>ST_Histogram</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
@@ -7999,7 +7999,7 @@ FROM foo;
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_Histogram</function></funcdef>
+ <funcdef>setof record <function>ST_Histogram</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>integer </type> <parameter>bins</parameter></paramdef>
@@ -8113,19 +8113,19 @@ FROM (SELECT rid, ST_Histogram(rast, 2,6,ARRAY[0.5,1,4,100,5]) As stats
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
- <funcdef>SETOF record <function>ST_Quantile</function></funcdef>
+ <funcdef>setof record <function>ST_Quantile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef choice="opt"><type>integer </type> <parameter>nband=1</parameter></paramdef>
<paramdef choice="opt"><type>boolean </type> <parameter>exclude_nodata_value=true</parameter></paramdef>
<paramdef choice="opt"><type>double precision[] </type> <parameter>quantiles=NULL</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_Quantile</function></funcdef>
+ <funcdef>setof record <function>ST_Quantile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>double precision[] </type> <parameter>quantiles</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_Quantile</function></funcdef>
+ <funcdef>setof record <function>ST_Quantile</function></funcdef>
<paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>double precision[] </type> <parameter>quantiles</parameter></paramdef>
@@ -8380,7 +8380,7 @@ FROM (SELECT band, ST_SummaryStats('o_4_boston','rast', band,true,0.25) As stats
<funcsynopsis>
<funcprototype>
<funcdef>summarystats <function>ST_SummaryStatsAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>sample_percent</parameter></paramdef>
@@ -8388,14 +8388,14 @@ FROM (SELECT band, ST_SummaryStats('o_4_boston','rast', band,true,0.25) As stats
<funcprototype>
<funcdef>summarystats <function>ST_SummaryStatsAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>sample_percent</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>summarystats <function>ST_SummaryStatsAgg</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
</funcprototype>
@@ -8481,8 +8481,8 @@ FROM (
<refsynopsisdiv>
<funcsynopsis>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <funcdef>record <function>ST_ValueCount</function></funcdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef choice="opt"><type>integer </type> <parameter>nband=1</parameter></paramdef>
<paramdef choice="opt"><type>boolean </type> <parameter>exclude_nodata_value=true</parameter></paramdef>
<paramdef choice="opt"><type>double precision[] </type> <parameter>searchvalues=NULL</parameter></paramdef>
@@ -8491,8 +8491,8 @@ FROM (
<paramdef><type>integer </type> <parameter>OUT count</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <funcdef>record <function>ST_ValueCount</function></funcdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>double precision[] </type> <parameter>searchvalues</parameter></paramdef>
<paramdef choice="opt"><type>double precision </type> <parameter>roundto=0</parameter></paramdef>
@@ -8500,8 +8500,8 @@ FROM (
<paramdef><type>integer </type> <parameter>OUT count</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <funcdef>record <function>ST_ValueCount</function></funcdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>double precision[] </type> <parameter>searchvalues</parameter></paramdef>
<paramdef choice="opt"><type>double precision </type> <parameter>roundto=0</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>OUT value</parameter></paramdef>
@@ -8510,14 +8510,14 @@ FROM (
<funcprototype>
<funcdef>bigint <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>searchvalue</parameter></paramdef>
<paramdef choice="opt"><type>double precision </type> <parameter>roundto=0</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bigint <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>boolean </type> <parameter>exclude_nodata_value</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>searchvalue</parameter></paramdef>
@@ -8526,14 +8526,14 @@ FROM (
<funcprototype>
<funcdef>bigint <function>ST_ValueCount</function></funcdef>
- <paramdef><type>raster </type> <parameter>rast</parameter></paramdef>
+ <paramdef><type>setof raster </type> <parameter>rast</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
<paramdef><type>double precision </type> <parameter>searchvalue</parameter></paramdef>
<paramdef choice="opt"><type>double precision </type> <parameter>roundto=0</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
+ <funcdef>setof record <function>ST_ValueCount</function></funcdef>
<paramdef><type>text </type> <parameter>rastertable</parameter></paramdef>
<paramdef><type>text </type> <parameter>rastercolumn</parameter></paramdef>
<paramdef choice="opt"><type>integer </type> <parameter>nband=1</parameter></paramdef>
@@ -8544,7 +8544,7 @@ FROM (
<paramdef><type>integer </type> <parameter>OUT count</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
+ <funcdef>setof record <function>ST_ValueCount</function></funcdef>
<paramdef><type>text </type> <parameter>rastertable</parameter></paramdef>
<paramdef><type>text </type> <parameter>rastercolumn</parameter></paramdef>
<paramdef><type>double precision[] </type> <parameter>searchvalues</parameter></paramdef>
@@ -8553,7 +8553,7 @@ FROM (
<paramdef><type>integer </type> <parameter>OUT count</parameter></paramdef>
</funcprototype>
<funcprototype>
- <funcdef>SETOF record <function>ST_ValueCount</function></funcdef>
+ <funcdef>setof record <function>ST_ValueCount</function></funcdef>
<paramdef><type>text </type> <parameter>rastertable</parameter></paramdef>
<paramdef><type>text </type> <parameter>rastercolumn</parameter></paramdef>
<paramdef><type>integer </type> <parameter>nband</parameter></paramdef>
commit 7e43c16c8aa421102f0cd6017967ce9b8f34291a
Author: Regina Obe <lr at pcorp.us>
Date: Sun Oct 16 19:28:20 2022 -0400
Numerous changes to cheatsheets
1. Handle sect2 functions
2. Update versions
3. Put cheatsheets in html folder like other html files
4. Flag aggregates and window functions in postgis and raster
cheatsheets
diff --git a/doc/Makefile.in b/doc/Makefile.in
index e6aee1809..12e4f88dc 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -9,7 +9,7 @@
#
# Copyright 2003-2022 Sandro Santilli <strk at kbt.io>
# Copyright 2004-2012 Paul Ramsey <pramsey at cleverelephant.ca>
-# Copyright 2009-2011 Regina Obe <lr at pcorp.us>
+# Copyright 2009-2022 Regina Obe <lr at pcorp.us>
# Copyright 2008-2010 Mark Cave-Ayland
# Copyright 2008-2010 Kevin Neufeld <kneufeld.ca at gmail.com>
# Copyright 2009-2010 Olivier Courtin <olivier.courtin at camptocamp.com>
@@ -227,31 +227,31 @@ endif
postgis_comments.sql: xsl/postgis_comments.sql.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
-postgis_cheatsheet.html: xsl/postgis_cheatsheet.html.xsl $(XML_INPUTS)
+html/postgis_cheatsheet.html: xsl/postgis_cheatsheet.html.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
raster_comments.sql: xsl/raster_comments.sql.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
-raster_cheatsheet.html: ./xsl/raster_cheatsheet.html.xsl $(XML_INPUTS)
+html/raster_cheatsheet.html: ./xsl/raster_cheatsheet.html.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
topology_comments.sql: xsl/topology_comments.sql.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
-topology_cheatsheet.html: xsl/topology_cheatsheet.html.xsl $(XML_INPUTS)
+html/topology_cheatsheet.html: xsl/topology_cheatsheet.html.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
sfcgal_comments.sql: xsl/sfcgal_comments.sql.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
-sfcgal_cheatsheet.html: xsl/sfcgal_cheatsheet.html.xsl $(XML_INPUTS)
+html/sfcgal_cheatsheet.html: xsl/sfcgal_cheatsheet.html.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
tiger_geocoder_comments.sql: xsl/tiger_geocoder_comments.sql.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
-tiger_geocoder_cheatsheet.html: xsl/tiger_geocoder_cheatsheet.html.xsl $(XML_INPUTS)
+html/tiger_geocoder_cheatsheet.html: xsl/tiger_geocoder_cheatsheet.html.xsl $(XML_INPUTS)
$(XSLTPROC) --novalid --path $(srcdir) $< postgis-out.xml > $@
postgis-out.xml: postgis.xml Makefile
@@ -372,7 +372,7 @@ else
comments: postgis_comments.sql raster_comments.sql topology_comments.sql sfcgal_comments.sql tiger_geocoder_comments.sql
endif
-cheatsheets: postgis_cheatsheet.html raster_cheatsheet.html topology_cheatsheet.html sfcgal_cheatsheet.html tiger_geocoder_cheatsheet.html
+cheatsheets: html/postgis_cheatsheet.html html/raster_cheatsheet.html html/topology_cheatsheet.html html/sfcgal_cheatsheet.html html/tiger_geocoder_cheatsheet.html
ifneq ($(CAN_BUILD_COMMENTS),yes)
comments-install:
diff --git a/doc/xsl/post_gis_day_cards.html.xsl b/doc/xsl/post_gis_day_cards.html.xsl
index 88efd8258..3273115ba 100644
--- a/doc/xsl/post_gis_day_cards.html.xsl
+++ b/doc/xsl/post_gis_day_cards.html.xsl
@@ -1,159 +1,159 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<!-- ********************************************************************
- ********************************************************************
- Copyright 2011, Regina Obe
- License: BSD
- Purpose: This is an xsl transform that generates PostGIS flash cards
- ******************************************************************** -->
- <xsl:output method="text" />
- <xsl:variable name='postgis_version'>2.1</xsl:variable>
- <xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
- <xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
-
-<xsl:template match="/">
- <xsl:text><![CDATA[<html><head><title>Post GIS PostGIS Playing Cards</title>
-<style>body {
- font-family: Arial, sans-serif;
- font-size: 8.5pt;
-}
-
-.func {position:relative;left:10px;top:20px;font-weight: 600;font-size:10pt;text-align:center; padding: 1px}
-.func_descrip {font-size: 8pt;text-align:left; padding:10px 5px 15px 20px;}
-#divoutter {width:800px; vertical-align: center }
-.card_front {
- background-color: #eee;
- width:334px; height: 148px;
- float:left;border-bottom:thin dotted #ff0000;
- border-left:thin dotted #ff0000;
- border-top:thin dotted #ff0000;
-}
-
-.card_back {
- background-color: #fff;
- width:334px; height: 148px;
- float:left; border-top:thin dotted #ff0000;
- border-bottom:thin solid #ff0000;
- border-right:thin dotted #ff0000;
-}
-.card_separator {height:9px;width:668px;clear:both;border-top:thin #00ff00}
-
-h1 {
- margin: 0px;
- padding: 0px;
- font-size: 14pt;
-}
-
-</style>
- </head><body><h1 style='text-align:center'>Post GIS ]]></xsl:text> <xsl:text><![CDATA[ Day 2012 Commemorative Playing Cards</h1>
- <a href="http://creativecommons.org/licenses/by-sa/3.0/"><img src='images/ccbysa.png' /></a> <a href="http://www.postgis.org">http://www.postgis.org</a>
- <p>Celebrate this Post GIS day with these versatile Post GIS day commemorative playing cards. The number of games and fun-filled hours you
- can have with these cards is priceless. Here is a small listing of the infinite number of games you can play with Post GIS cards:</p>
- <ul><li><b>Name that thing</b> In this game you have the descriptions face up and have the opponent guess the name of the function, type, or operator.</li>
- <li><b>What does it do?</b> In this game you have the name of the thing face up and have the opponent describe what the thing does or is for. Your friends and even
- strangers you tricked into playing this game will be amazed at your mastery of the 400 some-odd functions PostGIS provides. <em>To be able to exercise all 400 some-odd functions, you need to be running PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[+</em></li>
- <li><b>Post GIS war game</b> This game requires no knowledge of PostGIS what-so-ever. In this game, you play with the descriptions face up. Even your kids will like this game, and may learn how to use PostGIS better than you.
- There are two joker cards -- the "What Is Post GIS?" and "What does Post GIS?". Any player that is dealt either of these cards wins - period. For other cards the order of precedence is:
- <sup>1</sup> - Is super and beats anything else except another <sup>1</sup> or joker card. In the event of multiple <sup>1</sup>, the one that happens alphabetically first trumps the others. Symbols always trump letters. <br />
- <sup>2</sup> - Second favorite, alphabetical rules apply (is beaten by a joker, <sup>1</sup>) <br />
- <sup>mm</sup> - third highest ranking <br />
- All other cards precedence by alphabetical order.</li>
- <li><b>Post GIS in a language I don't understand</b> To celebrate the ubiquity of PostGIS, you can create Post GIS playing cards in a language
- you don't understand. Here is what you do. Go to <a href="http://translate.google.com" target="_blank">http://translate.google.com</a> and paste in the URL to this page in the first text box (make sure it is set to English),
- in the <b>To:</b> drop down, pick a language you do not know, but preferably you have friends that speak that language and can laugh at your grammar and pronounciation. In no time you'll be able to impress your friends living far far away with your command of their language.
- <b><span style='color:red'>Warning: </span> because of the great number of functions PostGIS has to offer, Google (or any other translator) may refuse to translate all cards leaving you with a mix of some other language and English cards.</b>
- </li>
- <li><b>Post GIS in a language I do understand</b> Similar to the I don't understand game, except you pick a non-english language that you do understand. Enjoy many moments of laughter reading machine generated translations that are sorta accurate but often comical.
- </li>
- <li><b>The Scotch and Milk moment, the beginning of all brilliant ideas</b> You realize there are 66 pages each of which has 6 cards. You realize you are a grown-up and grown-ups look silly cutting out cards from paper unless if accompanied by a minor. You have a kid staring at you wondering why this day is so special. <em>Eureka Moment</em>
- Pour yourself a glass of scotch and the kid a glass of milk and whip out the old scissors, glue, and print outs.
- <b>Serving suggestion:</b> It might be a good idea to pour the Scotch in a clear glass so you don't hand out the wrong glass to the kids.
- After the second helping, it might be prudent to stay away from the scissors.</li>
- <li>Invent your own Post GIS card game. The possiblities are only limited by your imagination.</li>
- </ul>
- <p style='page-break-before:always' />
- <div id="divoutter"><div class='card_front'><div class='func'>WHAT IS POST GIS?</div></div><div class='card_back'><div class='func'>POSTGIS<br /><img src='images/PostGIS_logo.png' style='width:100px;height:100px' /></div></div>
- <div class='card_separator'> </div>
- <div class='card_front'><div class='func'>WHAT DOES POST GIS?</div></div><div class='card_back'><div class='func'>POSTGIS<br /><img src='images/PostGIS_logo.png' style='width:100px;height:100px'/></div></div>
- <div class='card_separator'> </div>]]></xsl:text>
- <xsl:apply-templates select="/book/chapter//refentry" />
- <xsl:text><![CDATA[</div></body></html>]]></xsl:text>
-</xsl:template>
-
-
-<xsl:template match="refentry" >
- <xsl:variable name="lt"><xsl:text><![CDATA[<]]></xsl:text></xsl:variable>
- <xsl:variable name="gt"><xsl:text><![CDATA[>]]></xsl:text></xsl:variable>
- <xsl:variable name='plaindescr'>
- <xsl:call-template name="globalReplace">
- <xsl:with-param name="outputString" select="refnamediv/refpurpose"/>
- <xsl:with-param name="target" select="$lt"/>
- <xsl:with-param name="replacement" select="''"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name='plaindescr2'>
- <xsl:call-template name="globalReplace">
- <xsl:with-param name="outputString" select="$plaindescr"/>
- <xsl:with-param name="target" select="$gt"/>
- <xsl:with-param name="replacement" select="''"/>
- </xsl:call-template>
- </xsl:variable>
- <!-- add row for each function and alternate colors of rows -->
- <![CDATA[<div class="card_front"><div class='func'>]]><xsl:value-of select="refnamediv/refname" /><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
- <!-- enhanced tag -->
- <xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
- <xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'GEOS >= 3.4')"><![CDATA[<sup>g3.4</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3d</sup> ]]></xsl:if>
-
- <![CDATA[</div></div><div class='card_back'><div class='func_descrip'>]]><xsl:value-of select="$plaindescr2" /><![CDATA[</div></div>
- <div class="card_separator"> </div>]]>
-</xsl:template>
-
-<!--General replace macro hack to make up for the fact xsl 1.0 does not have a built in one.
- Not needed for xsl 2.0 lifted from http://www.xml.com/pub/a/2002/06/05/transforming.html -->
- <xsl:template name="globalReplace">
- <xsl:param name="outputString"/>
- <xsl:param name="target"/>
- <xsl:param name="replacement"/>
- <xsl:choose>
- <xsl:when test="contains($outputString,$target)">
- <xsl:value-of select=
- "concat(substring-before($outputString,$target),
- $replacement)"/>
- <xsl:call-template name="globalReplace">
- <xsl:with-param name="outputString"
- select="substring-after($outputString,$target)"/>
- <xsl:with-param name="target" select="$target"/>
- <xsl:with-param name="replacement"
- select="$replacement"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outputString"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-<xsl:template name="break">
- <xsl:param name="text" select="."/>
- <xsl:choose>
- <xsl:when test="contains($text, '
')">
- <xsl:value-of select="substring-before($text, '
')"/>
- <![CDATA[<br/>]]>
- <xsl:call-template name="break">
- <xsl:with-param
- name="text"
- select="substring-after($text, '
')"
- />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!-- ********************************************************************
+ ********************************************************************
+ Copyright 2011, Regina Obe
+ License: BSD
+ Purpose: This is an xsl transform that generates PostGIS flash cards
+ ******************************************************************** -->
+ <xsl:output method="text" />
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
+ <xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
+ <xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
+
+<xsl:template match="/">
+ <xsl:text><![CDATA[<html><head><title>Post GIS PostGIS Playing Cards</title>
+<style>body {
+ font-family: Arial, sans-serif;
+ font-size: 8.5pt;
+}
+
+.func {position:relative;left:10px;top:20px;font-weight: 600;font-size:10pt;text-align:center; padding: 1px}
+.func_descrip {font-size: 8pt;text-align:left; padding:10px 5px 15px 20px;}
+#divoutter {width:800px; vertical-align: center }
+.card_front {
+ background-color: #eee;
+ width:334px; height: 148px;
+ float:left;border-bottom:thin dotted #ff0000;
+ border-left:thin dotted #ff0000;
+ border-top:thin dotted #ff0000;
+}
+
+.card_back {
+ background-color: #fff;
+ width:334px; height: 148px;
+ float:left; border-top:thin dotted #ff0000;
+ border-bottom:thin solid #ff0000;
+ border-right:thin dotted #ff0000;
+}
+.card_separator {height:9px;width:668px;clear:both;border-top:thin #00ff00}
+
+h1 {
+ margin: 0px;
+ padding: 0px;
+ font-size: 14pt;
+}
+
+</style>
+ </head><body><h1 style='text-align:center'>Post GIS ]]></xsl:text> <xsl:text><![CDATA[ Day 2012 Commemorative Playing Cards</h1>
+ <a href="http://creativecommons.org/licenses/by-sa/3.0/"><img src='images/ccbysa.png' /></a> <a href="http://www.postgis.org">http://www.postgis.org</a>
+ <p>Celebrate this Post GIS day with these versatile Post GIS day commemorative playing cards. The number of games and fun-filled hours you
+ can have with these cards is priceless. Here is a small listing of the infinite number of games you can play with Post GIS cards:</p>
+ <ul><li><b>Name that thing</b> In this game you have the descriptions face up and have the opponent guess the name of the function, type, or operator.</li>
+ <li><b>What does it do?</b> In this game you have the name of the thing face up and have the opponent describe what the thing does or is for. Your friends and even
+ strangers you tricked into playing this game will be amazed at your mastery of the 400 some-odd functions PostGIS provides. <em>To be able to exercise all 400 some-odd functions, you need to be running PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[+</em></li>
+ <li><b>Post GIS war game</b> This game requires no knowledge of PostGIS what-so-ever. In this game, you play with the descriptions face up. Even your kids will like this game, and may learn how to use PostGIS better than you.
+ There are two joker cards -- the "What Is Post GIS?" and "What does Post GIS?". Any player that is dealt either of these cards wins - period. For other cards the order of precedence is:
+ <sup>1</sup> - Is super and beats anything else except another <sup>1</sup> or joker card. In the event of multiple <sup>1</sup>, the one that happens alphabetically first trumps the others. Symbols always trump letters. <br />
+ <sup>2</sup> - Second favorite, alphabetical rules apply (is beaten by a joker, <sup>1</sup>) <br />
+ <sup>mm</sup> - third highest ranking <br />
+ All other cards precedence by alphabetical order.</li>
+ <li><b>Post GIS in a language I don't understand</b> To celebrate the ubiquity of PostGIS, you can create Post GIS playing cards in a language
+ you don't understand. Here is what you do. Go to <a href="http://translate.google.com" target="_blank">http://translate.google.com</a> and paste in the URL to this page in the first text box (make sure it is set to English),
+ in the <b>To:</b> drop down, pick a language you do not know, but preferably you have friends that speak that language and can laugh at your grammar and pronounciation. In no time you'll be able to impress your friends living far far away with your command of their language.
+ <b><span style='color:red'>Warning: </span> because of the great number of functions PostGIS has to offer, Google (or any other translator) may refuse to translate all cards leaving you with a mix of some other language and English cards.</b>
+ </li>
+ <li><b>Post GIS in a language I do understand</b> Similar to the I don't understand game, except you pick a non-english language that you do understand. Enjoy many moments of laughter reading machine generated translations that are sorta accurate but often comical.
+ </li>
+ <li><b>The Scotch and Milk moment, the beginning of all brilliant ideas</b> You realize there are 66 pages each of which has 6 cards. You realize you are a grown-up and grown-ups look silly cutting out cards from paper unless if accompanied by a minor. You have a kid staring at you wondering why this day is so special. <em>Eureka Moment</em>
+ Pour yourself a glass of scotch and the kid a glass of milk and whip out the old scissors, glue, and print outs.
+ <b>Serving suggestion:</b> It might be a good idea to pour the Scotch in a clear glass so you don't hand out the wrong glass to the kids.
+ After the second helping, it might be prudent to stay away from the scissors.</li>
+ <li>Invent your own Post GIS card game. The possiblities are only limited by your imagination.</li>
+ </ul>
+ <p style='page-break-before:always' />
+ <div id="divoutter"><div class='card_front'><div class='func'>WHAT IS POST GIS?</div></div><div class='card_back'><div class='func'>POSTGIS<br /><img src='images/PostGIS_logo.png' style='width:100px;height:100px' /></div></div>
+ <div class='card_separator'> </div>
+ <div class='card_front'><div class='func'>WHAT DOES POST GIS?</div></div><div class='card_back'><div class='func'>POSTGIS<br /><img src='images/PostGIS_logo.png' style='width:100px;height:100px'/></div></div>
+ <div class='card_separator'> </div>]]></xsl:text>
+ <xsl:apply-templates select="/book/chapter//refentry" />
+ <xsl:text><![CDATA[</div></body></html>]]></xsl:text>
+</xsl:template>
+
+
+<xsl:template match="refentry" >
+ <xsl:variable name="lt"><xsl:text><![CDATA[<]]></xsl:text></xsl:variable>
+ <xsl:variable name="gt"><xsl:text><![CDATA[>]]></xsl:text></xsl:variable>
+ <xsl:variable name='plaindescr'>
+ <xsl:call-template name="globalReplace">
+ <xsl:with-param name="outputString" select="refnamediv/refpurpose"/>
+ <xsl:with-param name="target" select="$lt"/>
+ <xsl:with-param name="replacement" select="''"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name='plaindescr2'>
+ <xsl:call-template name="globalReplace">
+ <xsl:with-param name="outputString" select="$plaindescr"/>
+ <xsl:with-param name="target" select="$gt"/>
+ <xsl:with-param name="replacement" select="''"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- add row for each function and alternate colors of rows -->
+ <![CDATA[<div class="card_front"><div class='func'>]]><xsl:value-of select="refnamediv/refname" /><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
+ <!-- enhanced tag -->
+ <xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
+ <xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'GEOS >= 3.4')"><![CDATA[<sup>g3.4</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3d</sup> ]]></xsl:if>
+
+ <![CDATA[</div></div><div class='card_back'><div class='func_descrip'>]]><xsl:value-of select="$plaindescr2" /><![CDATA[</div></div>
+ <div class="card_separator"> </div>]]>
+</xsl:template>
+
+<!--General replace macro hack to make up for the fact xsl 1.0 does not have a built in one.
+ Not needed for xsl 2.0 lifted from http://www.xml.com/pub/a/2002/06/05/transforming.html -->
+ <xsl:template name="globalReplace">
+ <xsl:param name="outputString"/>
+ <xsl:param name="target"/>
+ <xsl:param name="replacement"/>
+ <xsl:choose>
+ <xsl:when test="contains($outputString,$target)">
+ <xsl:value-of select=
+ "concat(substring-before($outputString,$target),
+ $replacement)"/>
+ <xsl:call-template name="globalReplace">
+ <xsl:with-param name="outputString"
+ select="substring-after($outputString,$target)"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="replacement"
+ select="$replacement"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outputString"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<xsl:template name="break">
+ <xsl:param name="text" select="."/>
+ <xsl:choose>
+ <xsl:when test="contains($text, '
')">
+ <xsl:value-of select="substring-before($text, '
')"/>
+ <![CDATA[<br/>]]>
+ <xsl:call-template name="break">
+ <xsl:with-param
+ name="text"
+ select="substring-after($text, '
')"
+ />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/doc/xsl/postgis_cheatsheet.html.xsl b/doc/xsl/postgis_cheatsheet.html.xsl
index f3313420d..d66bc607e 100644
--- a/doc/xsl/postgis_cheatsheet.html.xsl
+++ b/doc/xsl/postgis_cheatsheet.html.xsl
@@ -8,12 +8,13 @@
statements from postgis xml doc reference
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='postgis_version'>3.1</xsl:variable>
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
<xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='include_examples'>false</xsl:variable>
<xsl:variable name='output_purpose'>true</xsl:variable>
- <xsl:variable name='linkstub'>http://postgis.net/docs/manual-dev/</xsl:variable>
+ <xsl:variable name='linkstub'>https://postgis.net/docs/manual-<xsl:value-of select="$postgis_version" />/</xsl:variable>
+
<xsl:template match="/">
<xsl:text><![CDATA[<html><head><title>PostGIS Cheat Sheet</title>
<style type="text/css">
@@ -44,12 +45,12 @@ body {
}
#content_functions_left {
- width:52%;
+ width:100%;
float: left;
}
#content_functions_right {
- width: 45%;
+ width: 100%;
float: right;
}
@@ -71,7 +72,7 @@ body {
.example {
border: 1px solid #000;
margin: 4px;
- width: 50%;
+ width: 100%;
float:left;
}
@@ -118,13 +119,14 @@ code {font-size: 8pt}
-->
</style>
</head><body><h1 style='text-align:center'>PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[ Cheatsheet</h1>]]></xsl:text>
- <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> Requires GEOS 3.4 or higher<sup>g3.4</sup> 2.5/3D support<sup>3d</sup> SQL-MM<sup>mm</sup> Supports geography <sup>G</sup></span><div id="content_functions">]]></xsl:text>
+ <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> aggregate <sup>agg</sup> window function <sup>W</sup> Requires GEOS 3.9 or higher<sup>g3.9</sup> 2.5/3D support<sup>3d</sup> SQL-MM<sup>mm</sup> Supports geography <sup>G</sup></span><div id="content_functions">]]></xsl:text>
<xsl:apply-templates select="/book/chapter[@id='reference']" />
<xsl:text><![CDATA[</div>]]></xsl:text>
<xsl:text><![CDATA[<div id="content_examples">]]></xsl:text>
<!-- examples go here -->
<xsl:if test="$include_examples='true'">
- <xsl:apply-templates select="/book/chapter[@id='reference']/sect1[count(//refentry//refsection//programlisting) > 0]" />
+ <xsl:apply-templates select="//chapter[@id='reference']/sect1[count(//refentry//refsection//programlisting) > 0]" />
+
</xsl:if>
<xsl:text><![CDATA[</div>]]></xsl:text>
<xsl:text><![CDATA[</body></html>]]></xsl:text>
@@ -137,7 +139,7 @@ code {font-size: 8pt}
<xsl:variable name="col_func_count"><xsl:value-of select="count(descendant::*//funcprototype) div 1.65" /></xsl:variable>
<!--count(preceding-sibling::*/refentry/refsynopsisdiv/funcsynopsis/funcprototype)-->
- <xsl:for-each select="sect1[count(//funcprototype) > 0]">
+ <xsl:for-each select="sect1[count(//funcprototype) > 0 and not( contains(@id,'sfcgal') )]">
<xsl:variable name="col_cur"><xsl:value-of select="count(current()//funcprototype) + count(preceding-sibling::*//funcprototype)"/></xsl:variable>
@@ -149,7 +151,7 @@ code {font-size: 8pt}
<xsl:text><![CDATA[<table class="section"><tr><th colspan="2">]]></xsl:text><xsl:value-of select="title" />
<!-- end of section header beginning of function list -->
<xsl:text><![CDATA[</th></tr>]]></xsl:text>
- <xsl:for-each select="refentry">
+ <xsl:for-each select="current()//refentry">
<!-- add row for each function and alternate colors of rows -->
<!-- , hyperlink to online manual -->
<![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>" <![CDATA[><td colspan='2'><span class='func'>]]><xsl:text><![CDATA[<a href="]]></xsl:text><xsl:value-of select="$linkstub" /><xsl:value-of select="@id" />.html<xsl:text><![CDATA[" target="_blank">]]></xsl:text><xsl:value-of select="refnamediv/refname" /><xsl:text><![CDATA[</a>]]></xsl:text><![CDATA[</span>]]><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
@@ -157,7 +159,7 @@ code {font-size: 8pt}
<xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
<xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
<xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'GEOS >= 3.4')"><![CDATA[<sup>g3.4</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'GEOS >= 3.9')"><![CDATA[<sup>g3.9</sup> ]]></xsl:if>
<xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3d</sup> ]]></xsl:if>
<!-- if only one proto just dispaly it on first line -->
<xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) = 1">
@@ -167,7 +169,8 @@ code {font-size: 8pt}
<![CDATA[ ]]>
<xsl:if test="$output_purpose = 'true'"><xsl:value-of select="refnamediv/refpurpose" /></xsl:if>
<!-- output different proto arg combos -->
- <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><![CDATA[</li>]]></xsl:for-each>
+ <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><xsl:if test=".//paramdef[contains(type,' set')] or .//paramdef[contains(type,'geography set')] or
+ .//paramdef[contains(type,'raster set')]"><![CDATA[<sup> agg</sup> ]]></xsl:if><xsl:if test=".//paramdef[contains(type,'winset')]"><![CDATA[ <sup>W</sup> ]]></xsl:if><![CDATA[</li>]]></xsl:for-each>
<![CDATA[</ol></span>]]></xsl:if>
<![CDATA[</td></tr>]]>
</xsl:for-each>
diff --git a/doc/xsl/postgis_gardentest_subset.sql.xsl b/doc/xsl/postgis_gardentest_subset.sql.xsl
index 31f286a12..21e5c34e4 100644
--- a/doc/xsl/postgis_gardentest_subset.sql.xsl
+++ b/doc/xsl/postgis_gardentest_subset.sql.xsl
@@ -9,7 +9,7 @@
test more geometries but only against one function. Useful for intro of new functions or comparing major changes from function of one version of PostGIS to the other
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='testversion'>2.1.0</xsl:variable>
+ <xsl:variable name='testversion'>3.3.0</xsl:variable>
<xsl:variable name="fninclude"><xsl:value-of select="$inputfninclude"/></xsl:variable>
<xsl:variable name='var_srid'>3395</xsl:variable>
<xsl:variable name='var_position'>1</xsl:variable>
@@ -73,12 +73,12 @@
CROSS JOIN generate_series(50,70, 20) As j
CROSS JOIN generate_series(1,2) As m
ORDER BY i, j, i+j+m, m, i*j*m)</pgis:gset>
-
+
<pgis:gset ID='PolyhedralSurface' GeometryType='PolyhedralSurface'>(SELECT ST_GeomFromEWKT(
-'SRID=0;PolyhedralSurface(
-((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
-((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
-((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1))
+'SRID=0;PolyhedralSurface(
+((0 0 0, 0 0 1, 0 1 1, 0 1 0, 0 0 0)),
+((0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0)), ((0 0 0, 1 0 0, 1 0 1, 0 0 1, 0 0 0)), ((1 1 0, 1 1 1, 1 0 1, 1 0 0, 1 1 0)),
+((0 1 0, 0 1 1, 1 1 1, 1 1 0, 0 1 0)), ((0 0 1, 1 0 1, 1 1 1, 0 1 1, 0 0 1))
)') )</pgis:gset>
<pgis:gset ID='GCSet3D' GeometryType='GEOMETRYCOLLECTIONZ' SkipUnary='1'>(SELECT ST_Collect(ST_Collect(ST_SetSRID(ST_MakePoint(i,j,m),4326),ST_SetSRID(ST_MakePolygon(ST_AddPoint(ST_AddPoint(ST_MakeLine(ST_MakePoint(i+m,j,m),ST_MakePoint(j+m,i-m,m)),ST_MakePoint(i,j,m)),ST_MakePointM(i+m,j,m))),4326))) As the_geom
@@ -146,7 +146,7 @@
UNION ALL SELECT ST_GeomFromText('POLYGON EMPTY',4326) As the_geom
)
</pgis:gset>
-
+
<pgis:gset ID="SingleNULL" GeometryType="GEOMETRY" createtable="false">(SELECT CAST(Null As geometry) As the_geom)</pgis:gset>
<pgis:gset ID="MultipleNULLs" GeometryType="GEOMETRY" createtable="false">(SELECT CAST(Null As geometry) As the_geom FROM generate_series(1,4) As foo)</pgis:gset>
@@ -164,7 +164,7 @@
FROM generate_series(-10,50,10) As i
CROSS JOIN generate_series(40,70, 20) As j
ORDER BY i, j, i*j)</pgis:gset>
-
+
</pgis:gardencrashers>
<!-- We deal only with the reference chapter -->
@@ -200,7 +200,7 @@ SELECT 'Ending <xsl:value-of select="funcdef/function" />(<xsl:value-of select=
<xsl:for-each select="document('')//pgis:gardens/pgis:gset">
<xsl:choose>
<xsl:when test="contains(paramdef, 'geometry ')">
-
+
SELECT 'Geometry <xsl:value-of select="$fnname" /><xsl:text> </xsl:text><xsl:value-of select="@ID" />: Start Testing <xsl:value-of select="@GeometryType" />';
BEGIN; <!-- If output is geometry show ewkt rep -->
SELECT ST_AsEWKT(<xsl:value-of select="$fnname" />(<xsl:value-of select="$fnfakeparams" />))
diff --git a/doc/xsl/raster_cheatsheet.html.xsl b/doc/xsl/raster_cheatsheet.html.xsl
index 238a7e855..f936e2eca 100644
--- a/doc/xsl/raster_cheatsheet.html.xsl
+++ b/doc/xsl/raster_cheatsheet.html.xsl
@@ -8,12 +8,12 @@
statements from postgis xml doc reference
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='postgis_version'>3.1</xsl:variable>
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
<xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='include_examples'>false</xsl:variable>
<xsl:variable name='output_purpose'>true</xsl:variable>
- <xsl:variable name='linkstub'>http://postgis.net/docs/manual-dev/</xsl:variable>
+ <xsl:variable name='linkstub'>https://postgis.net/docs/manual-<xsl:value-of select="$postgis_version" />/</xsl:variable>
<xsl:template match="/">
<xsl:text><![CDATA[<html><head><title>PostGIS Raster Cheat Sheet</title>
<style type="text/css">
@@ -104,7 +104,7 @@ code {font-size: 8pt}
-->
</style>
</head><body><h1 style='text-align:center'>PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[ Raster Cheatsheet</h1>]]></xsl:text>
- <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> Requires GEOS 3.3 or higher<sup>g3.3</sup> 2.5/3D support<sup>3d</sup> SQL-MM<sup>mm</sup> Supports geography <sup>G</sup></span> <div id="content_functions">]]></xsl:text>
+ <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> Requires GEOS 3.9 or higher<sup>g3.9</sup> aggregate <sup>agg</sup> 2.5/3D support<sup>3d</sup> SQL-MM<sup>mm</sup> Supports geography <sup>G</sup></span> <div id="content_functions">]]></xsl:text>
<xsl:apply-templates select="/book/chapter[@id='RT_reference']" name="function_list" />
<xsl:text><![CDATA[</div>]]></xsl:text>
<xsl:text><![CDATA[<div id="content_examples">]]></xsl:text>
@@ -124,7 +124,7 @@ code {font-size: 8pt}
<xsl:value-of select="title" />
<!-- end of section header beginning of function list -->
<xsl:text><![CDATA[</th></tr>]]></xsl:text>
- <xsl:for-each select="refentry">
+ <xsl:for-each select="current()//refentry">
<!-- add row for each function and alternate colors of rows -->
<!-- , hyperlink to online manual -->
<![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>" <![CDATA[><td colspan='2'><span class='func'>]]><xsl:text><![CDATA[<a href="]]></xsl:text><xsl:value-of select="$linkstub" /><xsl:value-of select="@id" />.html<xsl:text><![CDATA[" target="_blank">]]></xsl:text><xsl:value-of select="refnamediv/refname" /><xsl:text><![CDATA[</a>]]></xsl:text><![CDATA[</span>]]><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
@@ -132,17 +132,19 @@ code {font-size: 8pt}
<xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
<xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
<xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'GEOS >= 3.3')"><![CDATA[<sup>g3.3</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'GEOS >= 3.9')"><![CDATA[<sup>g3.9</sup> ]]></xsl:if>
<xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3D</sup> ]]></xsl:if>
<!-- if only one proto just dispaly it on first line -->
<xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) = 1">
- (<xsl:call-template name="list_in_params"><xsl:with-param name="func" select="refsynopsisdiv/funcsynopsis/funcprototype" /></xsl:call-template>)
+ (<xsl:call-template name="list_in_params"><xsl:with-param name="func" select="refsynopsisdiv/funcsynopsis/funcprototype" /></xsl:call-template><xsl:if test=".//paramdef[contains(type,'setof')] or .//paramdef[contains(type,'geography set')] or
+ .//paramdef[contains(type,'raster set')]"><![CDATA[<sup> agg</sup> ]]></xsl:if><xsl:if test=".//paramdef[contains(type,'winset')]"><![CDATA[ <sup>W</sup> ]]></xsl:if>)
</xsl:if>
<![CDATA[ ]]>
<xsl:if test="$output_purpose = 'true'"><xsl:value-of select="refnamediv/refpurpose" /></xsl:if>
<!-- output different proto arg combos -->
- <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><![CDATA[</li>]]></xsl:for-each>
+ <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><xsl:if test=".//paramdef[contains(type,' set')] or .//paramdef[contains(type,'setof')] or .//paramdef[contains(type,'geography set')] or
+ .//paramdef[contains(type,'raster set') ]"><![CDATA[<sup> agg</sup> ]]></xsl:if><xsl:if test=".//paramdef[contains(type,'winset')]"><![CDATA[ <sup>W</sup> ]]></xsl:if><![CDATA[</li>]]></xsl:for-each>
<![CDATA[</ol></span>]]></xsl:if>
<![CDATA[</td></tr>]]>
</xsl:for-each>
diff --git a/doc/xsl/raster_gardentest.sql.xsl b/doc/xsl/raster_gardentest.sql.xsl
index 0ba6c1e69..053df77ef 100644
--- a/doc/xsl/raster_gardentest.sql.xsl
+++ b/doc/xsl/raster_gardentest.sql.xsl
@@ -8,7 +8,7 @@
using a garden variety of rasters. Its intent is to flag major crashes.
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='testversion'>3.2.0</xsl:variable>
+ <xsl:variable name='testversion'>3.3.0</xsl:variable>
<xsl:variable name='fnexclude'>AddRasterColumn AddRasterConstraints DropRasterConstraints DropRasterColumn DropRasterTable</xsl:variable>
<!--This is just a place holder to state functions not supported in 1.3 or tested separately -->
diff --git a/doc/xsl/sfcgal_cheatsheet.html.xsl b/doc/xsl/sfcgal_cheatsheet.html.xsl
index 99f06126a..ca5606d91 100644
--- a/doc/xsl/sfcgal_cheatsheet.html.xsl
+++ b/doc/xsl/sfcgal_cheatsheet.html.xsl
@@ -8,12 +8,12 @@
statements from postgis xml doc reference
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='postgis_version'>3.1</xsl:variable>
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
<xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='include_examples'>false</xsl:variable>
<xsl:variable name='output_purpose'>true</xsl:variable>
- <xsl:variable name='linkstub'>http://postgis.net/docs/manual-dev/</xsl:variable>
+ <xsl:variable name='linkstub'>https://postgis.net/docs/manual-<xsl:value-of select="$postgis_version" />/</xsl:variable>
<xsl:template match="/">
<xsl:text><![CDATA[<html><head><title>PostGIS SFCGAL Cheat Sheet</title>
<style type="text/css">
diff --git a/doc/xsl/tiger_geocoder_cheatsheet.html.xsl b/doc/xsl/tiger_geocoder_cheatsheet.html.xsl
index cd5af55d4..cac6ebb03 100644
--- a/doc/xsl/tiger_geocoder_cheatsheet.html.xsl
+++ b/doc/xsl/tiger_geocoder_cheatsheet.html.xsl
@@ -8,12 +8,12 @@
statements from postgis xml doc reference
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='postgis_version'>3.1</xsl:variable>
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
<xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
<xsl:variable name='include_examples'>true</xsl:variable>
<xsl:variable name='output_purpose'>true</xsl:variable>
- <xsl:variable name='linkstub'>http://postgis.net/docs/manual-dev/</xsl:variable>
+ <xsl:variable name='linkstub'>http://postgis.net/docs/manual-<xsl:value-of select="$postgis_version" />/</xsl:variable>
<xsl:template match="/">
<xsl:text><![CDATA[<html><head><title>PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /> Tiger Geocoder Cheat Sheet <xsl:text><![CDATA[</title>
<style type="text/css">
diff --git a/doc/xsl/topology_cheatsheet.html.xsl b/doc/xsl/topology_cheatsheet.html.xsl
index 14c1b8f7f..39e7b7dc7 100644
--- a/doc/xsl/topology_cheatsheet.html.xsl
+++ b/doc/xsl/topology_cheatsheet.html.xsl
@@ -1,237 +1,237 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-<!-- ********************************************************************
- ********************************************************************
- Copyright 2011, Regina Obe
- License: BSD
- Purpose: This is an xsl transform that generates PostgreSQL COMMENT ON FUNCTION ddl
- statements from postgis xml doc reference
- ******************************************************************** -->
- <xsl:output method="text" />
- <xsl:variable name='postgis_version'>2.1</xsl:variable>
- <xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
- <xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
- <xsl:variable name='include_examples'>false</xsl:variable>
- <xsl:variable name='output_purpose'>true</xsl:variable>
- <xsl:variable name='linkstub'>http://postgis.net/docs/manual-dev/</xsl:variable>
-<xsl:template match="/">
- <xsl:text><![CDATA[<html><head><title>PostGIS Topology Cheat Sheet</title>
- <style type="text/css">
-<!--
-table { page-break-inside:avoid; page-break-after:auto }
-tr { page-break-inside:avoid; page-break-after:avoid }
-thead { display:table-header-group }
-tfoot { display:table-footer-group }
-body {
- font-family: Arial, sans-serif;
- font-size: 8.5pt;
-}
- at media print { a , a:hover, a:focus, a:active{text-decoration: none;color:black} }
- at media screen { a , a:hover, a:focus, a:active{text-decoration: underline} }
-.comment {font-size:x-small;color:green;font-family:"courier new"}
-.notes {font-size:x-small;color:red}
-#example_heading {
- border-bottom: 1px solid #000;
- margin: 10px 15px 10px 85px;
- color: #00d
-}
-
-#content_functions {
- float: left;
- width:100%;
-}
-
-#content_examples {
- float: left;
- width: 100%;
-}
-
-.section {
- border: 1px solid #000; float:left;
- margin: 4px;]]></xsl:text>
- <xsl:choose><xsl:when test="$output_purpose = 'false'"><![CDATA[width: 45%;]]></xsl:when><xsl:otherwise><![CDATA[width: 100%;]]></xsl:otherwise></xsl:choose>
-<xsl:text><![CDATA[ }
-.section th {
- border: 1px solid #000;
- color: #fff;
- background-color: #b63300;
- font-size: 9.5pt;
-
-}
-.section td {
- font-family: Arial, sans-serif;
- font-size: 8.5pt;
- vertical-align: top;
- border: 0;
-}
-
-.func {font-weight: 600}
-.func {font-weight: 600}
-.func_args {font-size: 7.5pt;font-family:courier;}
-.func_args ol {margin: 2px}
-.func_args ol li {margin: 5px}
-
-.evenrow {
- background-color: #eee;
-}
-
-.oddrow {
- background-color: #fff;
-}
-
-h1 {
- margin: 0px;
- padding: 0px;
- font-size: 14pt;
-}
-
--->
-</style>
- </head><body><h1 style='text-align:center'>PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[ Topology Cheatsheet</h1>]]></xsl:text>
- <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> Requires GEOS 3.4 or higher<sup>3.4</sup></span><div id="content_functions">]]></xsl:text>
- <xsl:apply-templates select="/book/chapter[@id='Topology']" name="function_list" />
- <xsl:text><![CDATA[</div>]]></xsl:text>
- <xsl:text><![CDATA[<div id="content_examples">]]></xsl:text>
- <!-- examples go here -->
- <xsl:if test="$include_examples='true'">
- <xsl:apply-templates select="/book/chapter[@id='Topology']/sect1[count(//refentry//refsection//programlisting) > 0]" />
- </xsl:if>
- <xsl:text><![CDATA[</div>]]></xsl:text>
- <xsl:text><![CDATA[</body></html>]]></xsl:text>
-</xsl:template>
-
-
- <xsl:template match="chapter" name="function_list">
- <xsl:for-each select="sect1">
- <!--Beginning of section -->
- <xsl:text><![CDATA[<table class="section"><tr><th colspan="2">]]></xsl:text>
- <xsl:value-of select="title" />
- <!-- end of section header beginning of function list -->
- <xsl:text><![CDATA[</th></tr>]]></xsl:text>
- <xsl:for-each select="refentry">
- <!-- add row for each function and alternate colors of rows -->
- <!-- , hyperlink to online manual -->
- <![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>" <![CDATA[><td colspan='2'><span class='func'>]]><xsl:text><![CDATA[<a href="]]></xsl:text><xsl:value-of select="$linkstub" /><xsl:value-of select="@id" />.html<xsl:text><![CDATA[" target="_blank">]]></xsl:text><xsl:value-of select="refnamediv/refname" /><xsl:text><![CDATA[</a>]]></xsl:text><![CDATA[</span>]]><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
- <!-- enhanced tag -->
- <xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
- <xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'GEOS >= 3.4')"><![CDATA[<sup>g3.4</sup> ]]></xsl:if>
- <xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3D</sup> ]]></xsl:if>
- <!-- if only one proto just dispaly it on first line -->
- <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) = 1">
- (<xsl:call-template name="list_in_params"><xsl:with-param name="func" select="refsynopsisdiv/funcsynopsis/funcprototype" /></xsl:call-template>)
- </xsl:if>
-
- <![CDATA[ ]]>
- <xsl:if test="$output_purpose = 'true'"><xsl:value-of select="refnamediv/refpurpose" /></xsl:if>
- <!-- output different proto arg combos -->
- <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><![CDATA[</li>]]></xsl:for-each>
- <![CDATA[</ol></span>]]></xsl:if>
- <![CDATA[</td></tr>]]>
- </xsl:for-each>
- <!--close section -->
- <![CDATA[</table>]]>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="sect1[//refentry//refsection[contains(title,'Example')]]">
- <!-- less than needed for converting html tags in listings so they are printable -->
- <xsl:variable name="lt"><xsl:text><![CDATA[<]]></xsl:text></xsl:variable>
- <!-- only print section header if it has examples - not sure why this is necessary -->
- <xsl:if test="contains(., 'Example')">
- <!--Beginning of section -->
- <xsl:text><![CDATA[<table><tr><th colspan="2" class="example_heading">]]></xsl:text>
- <xsl:value-of select="title" /> Examples
- <!--only pull the first example section of each function -->
- <xsl:for-each select="refentry//refsection[contains(title,'Example')][1]/programlisting[1]">
- <!-- end of section header beginning of function list -->
- <xsl:text><![CDATA[</th></tr>]]></xsl:text>
- <xsl:variable name='plainlisting'>
- <xsl:call-template name="globalReplace">
- <xsl:with-param name="outputString" select="."/>
- <xsl:with-param name="target" select="$lt"/>
- <xsl:with-param name="replacement" select="'<'"/>
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name='listing'>
- <xsl:call-template name="break">
- <xsl:with-param name="text" select="$plainlisting" />
- </xsl:call-template>
- </xsl:variable>
-
-
-
- <!-- add row for each function and alternate colors of rows -->
- <![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>"<![CDATA[>]]>
- <![CDATA[<td><b>]]><xsl:value-of select="ancestor::refentry/refnamediv/refname" /><![CDATA[</b><br /><code>]]><xsl:value-of select="$listing" disable-output-escaping="no"/><![CDATA[</code></td></tr>]]>
- </xsl:for-each>
- <![CDATA[</table>]]>
- </xsl:if>
- <!--close section -->
-
-
- </xsl:template>
-
-<!--General replace macro hack to make up for the fact xsl 1.0 does not have a built in one.
- Not needed for xsl 2.0 lifted from http://www.xml.com/pub/a/2002/06/05/transforming.html -->
- <xsl:template name="globalReplace">
- <xsl:param name="outputString"/>
- <xsl:param name="target"/>
- <xsl:param name="replacement"/>
- <xsl:choose>
- <xsl:when test="contains($outputString,$target)">
- <xsl:value-of select=
- "concat(substring-before($outputString,$target),
- $replacement)"/>
- <xsl:call-template name="globalReplace">
- <xsl:with-param name="outputString"
- select="substring-after($outputString,$target)"/>
- <xsl:with-param name="target" select="$target"/>
- <xsl:with-param name="replacement"
- select="$replacement"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$outputString"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-<xsl:template name="break">
- <xsl:param name="text" select="."/>
- <xsl:choose>
- <xsl:when test="contains($text, '
')">
- <xsl:value-of select="substring-before($text, '
')"/>
- <![CDATA[<br/>]]>
- <xsl:call-template name="break">
- <xsl:with-param
- name="text"
- select="substring-after($text, '
')"
- />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-<!--macro to pull out function parameter names so we can provide a pretty arg list prefix for each function -->
-<xsl:template name="list_in_params">
- <xsl:param name="func" />
- <xsl:for-each select="$func">
- <xsl:if test="count(paramdef/parameter) > 0"> </xsl:if>
- <xsl:for-each select="paramdef">
- <xsl:choose>
- <xsl:when test="not( contains(parameter, 'OUT') )">
- <xsl:value-of select="parameter" />
- <xsl:if test="position()<last()"><xsl:text>, </xsl:text></xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:for-each>
-</xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="UTF-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<!-- ********************************************************************
+ ********************************************************************
+ Copyright 2011, Regina Obe
+ License: BSD
+ Purpose: This is an xsl transform that generates PostgreSQL COMMENT ON FUNCTION ddl
+ statements from postgis xml doc reference
+ ******************************************************************** -->
+ <xsl:output method="text" />
+ <xsl:variable name='postgis_version'>3.3</xsl:variable>
+ <xsl:variable name='new_tag'>Availability: <xsl:value-of select="$postgis_version" /></xsl:variable>
+ <xsl:variable name='enhanced_tag'>Enhanced: <xsl:value-of select="$postgis_version" /></xsl:variable>
+ <xsl:variable name='include_examples'>false</xsl:variable>
+ <xsl:variable name='output_purpose'>true</xsl:variable>
+ <xsl:variable name='linkstub'>http://postgis.net/docs/manual-<xsl:value-of select="$postgis_version" />/</xsl:variable>
+<xsl:template match="/">
+ <xsl:text><![CDATA[<html><head><title>PostGIS Topology Cheat Sheet</title>
+ <style type="text/css">
+<!--
+table { page-break-inside:avoid; page-break-after:auto }
+tr { page-break-inside:avoid; page-break-after:avoid }
+thead { display:table-header-group }
+tfoot { display:table-footer-group }
+body {
+ font-family: Arial, sans-serif;
+ font-size: 8.5pt;
+}
+ at media print { a , a:hover, a:focus, a:active{text-decoration: none;color:black} }
+ at media screen { a , a:hover, a:focus, a:active{text-decoration: underline} }
+.comment {font-size:x-small;color:green;font-family:"courier new"}
+.notes {font-size:x-small;color:red}
+#example_heading {
+ border-bottom: 1px solid #000;
+ margin: 10px 15px 10px 85px;
+ color: #00d
+}
+
+#content_functions {
+ float: left;
+ width:100%;
+}
+
+#content_examples {
+ float: left;
+ width: 100%;
+}
+
+.section {
+ border: 1px solid #000; float:left;
+ margin: 4px;]]></xsl:text>
+ <xsl:choose><xsl:when test="$output_purpose = 'false'"><![CDATA[width: 45%;]]></xsl:when><xsl:otherwise><![CDATA[width: 100%;]]></xsl:otherwise></xsl:choose>
+<xsl:text><![CDATA[ }
+.section th {
+ border: 1px solid #000;
+ color: #fff;
+ background-color: #b63300;
+ font-size: 9.5pt;
+
+}
+.section td {
+ font-family: Arial, sans-serif;
+ font-size: 8.5pt;
+ vertical-align: top;
+ border: 0;
+}
+
+.func {font-weight: 600}
+.func {font-weight: 600}
+.func_args {font-size: 7.5pt;font-family:courier;}
+.func_args ol {margin: 2px}
+.func_args ol li {margin: 5px}
+
+.evenrow {
+ background-color: #eee;
+}
+
+.oddrow {
+ background-color: #fff;
+}
+
+h1 {
+ margin: 0px;
+ padding: 0px;
+ font-size: 14pt;
+}
+
+-->
+</style>
+ </head><body><h1 style='text-align:center'>PostGIS ]]></xsl:text> <xsl:value-of select="$postgis_version" /><xsl:text><![CDATA[ Topology Cheatsheet</h1>]]></xsl:text>
+ <xsl:text><![CDATA[<span class='notes'>New in this release <sup>1</sup> Enhanced in this release <sup>2</sup> Requires GEOS 3.4 or higher<sup>3.4</sup></span><div id="content_functions">]]></xsl:text>
+ <xsl:apply-templates select="/book/chapter[@id='Topology']" name="function_list" />
+ <xsl:text><![CDATA[</div>]]></xsl:text>
+ <xsl:text><![CDATA[<div id="content_examples">]]></xsl:text>
+ <!-- examples go here -->
+ <xsl:if test="$include_examples='true'">
+ <xsl:apply-templates select="/book/chapter[@id='Topology']/sect1[count(//refentry//refsection//programlisting) > 0]" />
+ </xsl:if>
+ <xsl:text><![CDATA[</div>]]></xsl:text>
+ <xsl:text><![CDATA[</body></html>]]></xsl:text>
+</xsl:template>
+
+
+ <xsl:template match="chapter" name="function_list">
+ <xsl:for-each select="sect1">
+ <!--Beginning of section -->
+ <xsl:text><![CDATA[<table class="section"><tr><th colspan="2">]]></xsl:text>
+ <xsl:value-of select="title" />
+ <!-- end of section header beginning of function list -->
+ <xsl:text><![CDATA[</th></tr>]]></xsl:text>
+ <xsl:for-each select="refentry">
+ <!-- add row for each function and alternate colors of rows -->
+ <!-- , hyperlink to online manual -->
+ <![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>" <![CDATA[><td colspan='2'><span class='func'>]]><xsl:text><![CDATA[<a href="]]></xsl:text><xsl:value-of select="$linkstub" /><xsl:value-of select="@id" />.html<xsl:text><![CDATA[" target="_blank">]]></xsl:text><xsl:value-of select="refnamediv/refname" /><xsl:text><![CDATA[</a>]]></xsl:text><![CDATA[</span>]]><xsl:if test="contains(.,$new_tag)"><![CDATA[<sup>1</sup> ]]></xsl:if>
+ <!-- enhanced tag -->
+ <xsl:if test="contains(.,$enhanced_tag)"><![CDATA[<sup>2</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'implements the SQL/MM')"><![CDATA[<sup>mm</sup> ]]></xsl:if>
+ <xsl:if test="contains(refsynopsisdiv/funcsynopsis,'geography') or contains(refsynopsisdiv/funcsynopsis/funcprototype/funcdef,'geography')"><![CDATA[<sup>G</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'GEOS >= 3.4')"><![CDATA[<sup>g3.4</sup> ]]></xsl:if>
+ <xsl:if test="contains(.,'This function supports 3d')"><![CDATA[<sup>3D</sup> ]]></xsl:if>
+ <!-- if only one proto just dispaly it on first line -->
+ <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) = 1">
+ (<xsl:call-template name="list_in_params"><xsl:with-param name="func" select="refsynopsisdiv/funcsynopsis/funcprototype" /></xsl:call-template>)
+ </xsl:if>
+
+ <![CDATA[ ]]>
+ <xsl:if test="$output_purpose = 'true'"><xsl:value-of select="refnamediv/refpurpose" /></xsl:if>
+ <!-- output different proto arg combos -->
+ <xsl:if test="count(refsynopsisdiv/funcsynopsis/funcprototype) > 1"><![CDATA[<span class='func_args'><ol>]]><xsl:for-each select="refsynopsisdiv/funcsynopsis/funcprototype"><![CDATA[<li>]]><xsl:call-template name="list_in_params"><xsl:with-param name="func" select="." /></xsl:call-template><![CDATA[</li>]]></xsl:for-each>
+ <![CDATA[</ol></span>]]></xsl:if>
+ <![CDATA[</td></tr>]]>
+ </xsl:for-each>
+ <!--close section -->
+ <![CDATA[</table>]]>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:template match="sect1[//refentry//refsection[contains(title,'Example')]]">
+ <!-- less than needed for converting html tags in listings so they are printable -->
+ <xsl:variable name="lt"><xsl:text><![CDATA[<]]></xsl:text></xsl:variable>
+ <!-- only print section header if it has examples - not sure why this is necessary -->
+ <xsl:if test="contains(., 'Example')">
+ <!--Beginning of section -->
+ <xsl:text><![CDATA[<table><tr><th colspan="2" class="example_heading">]]></xsl:text>
+ <xsl:value-of select="title" /> Examples
+ <!--only pull the first example section of each function -->
+ <xsl:for-each select="refentry//refsection[contains(title,'Example')][1]/programlisting[1]">
+ <!-- end of section header beginning of function list -->
+ <xsl:text><![CDATA[</th></tr>]]></xsl:text>
+ <xsl:variable name='plainlisting'>
+ <xsl:call-template name="globalReplace">
+ <xsl:with-param name="outputString" select="."/>
+ <xsl:with-param name="target" select="$lt"/>
+ <xsl:with-param name="replacement" select="'<'"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:variable name='listing'>
+ <xsl:call-template name="break">
+ <xsl:with-param name="text" select="$plainlisting" />
+ </xsl:call-template>
+ </xsl:variable>
+
+
+
+ <!-- add row for each function and alternate colors of rows -->
+ <![CDATA[<tr]]> class="<xsl:choose><xsl:when test="position() mod 2 = 0">evenrow</xsl:when><xsl:otherwise>oddrow</xsl:otherwise></xsl:choose>"<![CDATA[>]]>
+ <![CDATA[<td><b>]]><xsl:value-of select="ancestor::refentry/refnamediv/refname" /><![CDATA[</b><br /><code>]]><xsl:value-of select="$listing" disable-output-escaping="no"/><![CDATA[</code></td></tr>]]>
+ </xsl:for-each>
+ <![CDATA[</table>]]>
+ </xsl:if>
+ <!--close section -->
+
+
+ </xsl:template>
+
+<!--General replace macro hack to make up for the fact xsl 1.0 does not have a built in one.
+ Not needed for xsl 2.0 lifted from http://www.xml.com/pub/a/2002/06/05/transforming.html -->
+ <xsl:template name="globalReplace">
+ <xsl:param name="outputString"/>
+ <xsl:param name="target"/>
+ <xsl:param name="replacement"/>
+ <xsl:choose>
+ <xsl:when test="contains($outputString,$target)">
+ <xsl:value-of select=
+ "concat(substring-before($outputString,$target),
+ $replacement)"/>
+ <xsl:call-template name="globalReplace">
+ <xsl:with-param name="outputString"
+ select="substring-after($outputString,$target)"/>
+ <xsl:with-param name="target" select="$target"/>
+ <xsl:with-param name="replacement"
+ select="$replacement"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$outputString"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+<xsl:template name="break">
+ <xsl:param name="text" select="."/>
+ <xsl:choose>
+ <xsl:when test="contains($text, '
')">
+ <xsl:value-of select="substring-before($text, '
')"/>
+ <![CDATA[<br/>]]>
+ <xsl:call-template name="break">
+ <xsl:with-param
+ name="text"
+ select="substring-after($text, '
')"
+ />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$text"/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<!--macro to pull out function parameter names so we can provide a pretty arg list prefix for each function -->
+<xsl:template name="list_in_params">
+ <xsl:param name="func" />
+ <xsl:for-each select="$func">
+ <xsl:if test="count(paramdef/parameter) > 0"> </xsl:if>
+ <xsl:for-each select="paramdef">
+ <xsl:choose>
+ <xsl:when test="not( contains(parameter, 'OUT') )">
+ <xsl:value-of select="parameter" />
+ <xsl:if test="position()<last()"><xsl:text>, </xsl:text></xsl:if>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:for-each>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/doc/xsl/topology_gardentest.sql.xsl b/doc/xsl/topology_gardentest.sql.xsl
index 601ced30b..09f3f2fb0 100644
--- a/doc/xsl/topology_gardentest.sql.xsl
+++ b/doc/xsl/topology_gardentest.sql.xsl
@@ -8,7 +8,7 @@
using a garden variety of geometries. Its intent is to flag major crashes.
******************************************************************** -->
<xsl:output method="text" />
- <xsl:variable name='testversion'>3.1.0</xsl:variable>
+ <xsl:variable name='testversion'>3.3.0</xsl:variable>
<xsl:variable name='fnexclude'>AddTopoGeometryColumn DropTopoGeometryColumn CreateTopology</xsl:variable>
<!--This is just a place holder to state functions not supported in 1.3 or tested separately -->
-----------------------------------------------------------------------
Summary of changes:
doc/Makefile.in | 14 +-
doc/reference_raster.xml | 52 ++--
doc/xsl/post_gis_day_cards.html.xsl | 318 +++++++++----------
doc/xsl/postgis_cheatsheet.html.xsl | 25 +-
doc/xsl/postgis_gardentest_subset.sql.xsl | 18 +-
doc/xsl/raster_cheatsheet.html.xsl | 16 +-
doc/xsl/raster_gardentest.sql.xsl | 2 +-
doc/xsl/sfcgal_cheatsheet.html.xsl | 4 +-
doc/xsl/tiger_geocoder_cheatsheet.html.xsl | 4 +-
doc/xsl/topology_cheatsheet.html.xsl | 474 ++++++++++++++---------------
doc/xsl/topology_gardentest.sql.xsl | 2 +-
11 files changed, 467 insertions(+), 462 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list