xqueryx-CDATA.xsl.xml - Revision 1.10 xqueryx-CDATA.xsl.xml - Working Copy (Revision 1.10)
1<![CDATA[1<![CDATA[
2<?xml version="1.0"?>2<?xml version="1.0"?>
3<!--  ================================================================================  -->3<!--  ================================================================================  -->
4<!--  Changes from Recommendation (XQueryX 3.0):                                        -->4<!--  Changes from Recommendation (XQueryX 3.0):                                        -->
5<!--  ================================================================================  -->5<!--  ================================================================================  -->
6<!--  Errata applied:                                                                   -->6<!--  Errata applied:                                                                   -->
7<!--  ================================================================================  -->7<!--  ================================================================================  -->
8<!--  Modifications:                                                                    -->8<!--  Modifications:                                                                    -->
9<!--    JS/2015-11-05 : Added support for stringConstructor                             -->
9<!--    JM/2014-07-11 : Added support for anyMapText and typedMapTest                   -->10<!--    JM/2014-07-11 : Added support for anyMapText and typedMapTest                   -->
10<!--    JM/2014-07-11 : Added support for anyArrayText and typedArrayTest               -->11<!--    JM/2014-07-11 : Added support for anyArrayText and typedArrayTest               -->
11<!--    JM/2014-07-13 : Added support for new alternatives in stepExpr                  -->12<!--    JM/2014-07-13 : Added support for new alternatives in stepExpr                  -->
12<!--    JM/2014-07-13 : Added support for lookup (formerly mapLookup)                   -->13<!--    JM/2014-07-13 : Added support for lookup (formerly mapLookup)                   -->
13<!--    JM/2014-07-13 : Added support for unaryLookup (formerly unaryMapLookup)         -->14<!--    JM/2014-07-13 : Added support for unaryLookup (formerly unaryMapLookup)         -->
14<!--    JM/2014-07-13 : Added support for new alternatives in filterExpr                -->15<!--    JM/2014-07-13 : Added support for new alternatives in filterExpr                -->
15<!--    JM/2014-07-13 : Added support for mapConstructor and arrayConstructor           -->16<!--    JM/2014-07-13 : Added support for mapConstructor and arrayConstructor           -->
16<!--    JM/2014-08-28 : Fixed [unary]Lookup replacing stringLiteral w/integerLiteral    -->17<!--    JM/2014-08-28 : Fixed [unary]Lookup replacing stringLiteral w/integerLiteral    -->
17<!--    JM/2015-02-11 : Replaced arrowPostfix with arrowExpr per bug 27537              -->18<!--    JM/2015-02-11 : Replaced arrowPostfix with arrowExpr per bug 27537              -->
18<!--  ================================================================================  -->19<!--  ================================================================================  -->
19<xsl:stylesheet version="2.0"20<xsl:stylesheet version="2.0"
20    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"21    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
21    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"22    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
22    xmlns:xqx="http://www.w3.org/2005/XQueryX">23    xmlns:xqx="http://www.w3.org/2005/XQueryX">
2324
24<!-- Note that this stylesheet frequently invokes templates for25<!-- Note that this stylesheet frequently invokes templates for
25     specified elements, even when there are no templates in the26     specified elements, even when there are no templates in the
26     stylesheet whose match="" attribute identifies those elements.27     stylesheet whose match="" attribute identifies those elements.
27     In such case, the default template's element matching template28     In such case, the default template's element matching template
28     is invoked, which merely invokes xsl:apply-templates -->29     is invoked, which merely invokes xsl:apply-templates -->
2930
30  <xsl:output method="text"/>31  <xsl:output method="text"/>
31  <xsl:strip-space elements="*"/>32  <xsl:strip-space elements="*"/>
32  <xsl:preserve-space elements="xqx:value xqx:attributeValue xqx:pragmaContents33  <xsl:preserve-space elements="xqx:value xqx:attributeValue xqx:pragmaContents
33                                xqx:optionContents xqx:xquery"/>34                                xqx:optionContents xqx:xquery"/>
3435
35  <xsl:variable name="DOT" select="'.'"/>36  <xsl:variable name="DOT" select="'.'"/>
36  <xsl:variable name="SPACE" select="' '"/>37  <xsl:variable name="SPACE" select="' '"/>
37  <xsl:variable name="SLASH" select="'/'"/>38  <xsl:variable name="SLASH" select="'/'"/>
38  <xsl:variable name="SLASH_SLASH" select="'//'"/>39  <xsl:variable name="SLASH_SLASH" select="'//'"/>
39  <xsl:variable name="LESSTHAN" select="'&lt;'"/>40  <xsl:variable name="LESSTHAN" select="'&lt;'"/>
40  <xsl:variable name="GREATERTHAN" select="'&gt;'"/>41  <xsl:variable name="GREATERTHAN" select="'&gt;'"/>
41  <xsl:variable name="LPAREN" select="'('"/>42  <xsl:variable name="LPAREN" select="'('"/>
42  <xsl:variable name="RPAREN" select="')'"/>43  <xsl:variable name="RPAREN" select="')'"/>
43  <xsl:variable name="NEWLINE"><xsl:text>44  <xsl:variable name="NEWLINE"><xsl:text>
44</xsl:text></xsl:variable>45</xsl:text></xsl:variable>
45  <xsl:variable name="COMMA" select="','"/>46  <xsl:variable name="COMMA" select="','"/>
46  <xsl:variable name="COMMA_SPACE" select="', '"/>47  <xsl:variable name="COMMA_SPACE" select="', '"/>
47  <xsl:variable name="COMMA_NEWLINE"><xsl:text>,48  <xsl:variable name="COMMA_NEWLINE"><xsl:text>,
48</xsl:text></xsl:variable>49</xsl:text></xsl:variable>
49  <xsl:variable name="QUOTE"><xsl:text>'</xsl:text></xsl:variable>50  <xsl:variable name="QUOTE"><xsl:text>'</xsl:text></xsl:variable>
50  <xsl:variable name="DOUBLEQUOTE"><xsl:text>"</xsl:text></xsl:variable>51  <xsl:variable name="DOUBLEQUOTE"><xsl:text>"</xsl:text></xsl:variable>
51  <xsl:variable name="TO" select="' to '"/>52  <xsl:variable name="TO" select="' to '"/>
52  <xsl:variable name="LBRACE" select="'{'"/>53  <xsl:variable name="LBRACE" select="'{'"/>
53  <xsl:variable name="RBRACE" select="'}'"/>54  <xsl:variable name="RBRACE" select="'}'"/>
54  <xsl:variable name="LBRACKET" select="'['"/>55  <xsl:variable name="LBRACKET" select="'['"/>
55  <xsl:variable name="RBRACKET" select="']'"/>56  <xsl:variable name="RBRACKET" select="']'"/>
56  <xsl:variable name="DOLLAR" select="'$'"/>57  <xsl:variable name="DOLLAR" select="'$'"/>
57  <xsl:variable name="MINUS" select="'-'"/>58  <xsl:variable name="MINUS" select="'-'"/>
58  <xsl:variable name="PLUS" select="'+'"/>59  <xsl:variable name="PLUS" select="'+'"/>
59  <xsl:variable name="EQUAL" select="'='"/>60  <xsl:variable name="EQUAL" select="'='"/>
60  <xsl:variable name="COLON" select="':'"/>61  <xsl:variable name="COLON" select="':'"/>
61  <xsl:variable name="DOUBLE_COLON" select="'::'"/>62  <xsl:variable name="DOUBLE_COLON" select="'::'"/>
62  <xsl:variable name="SEMICOLON" select="';'"/>63  <xsl:variable name="SEMICOLON" select="';'"/>
63  <xsl:variable name="AT" select="'@'"/>64  <xsl:variable name="AT" select="'@'"/>
64  <xsl:variable name="STAR" select="'*'"/>65  <xsl:variable name="STAR" select="'*'"/>
65  <xsl:variable name="QUESTIONMARK" select="'?'"/>66  <xsl:variable name="QUESTIONMARK" select="'?'"/>
66  <xsl:variable name="EXCLAMATIONMARK" select="'!'"/>67  <xsl:variable name="EXCLAMATIONMARK" select="'!'"/>
67  <xsl:variable name="PERCENT" select="'%'"/>68  <xsl:variable name="PERCENT" select="'%'"/>
68  <xsl:variable name="ASSIGN" select="':='"/>69  <xsl:variable name="ASSIGN" select="':='"/>
69  <xsl:variable name="SEPARATOR" select="';'"/>70  <xsl:variable name="SEPARATOR" select="';'"/>
70  <xsl:variable name="PRAGMA_BEGIN" select="'(# '"/>71  <xsl:variable name="PRAGMA_BEGIN" select="'(# '"/>
71  <xsl:variable name="PRAGMA_END" select="' #)'"/>72  <xsl:variable name="PRAGMA_END" select="' #)'"/>
72  <xsl:variable name="CONCATENATE" select="'||'"/>73  <xsl:variable name="CONCATENATE" select="'||'"/>
7374
7475
75  <xsl:template name="delimitedList">76  <xsl:template name="delimitedList">
76    <xsl:param name="delimiter" />77    <xsl:param name="delimiter" />
77    <xsl:param name="leftEncloser"/>78    <xsl:param name="leftEncloser"/>
78    <xsl:param name="rightEncloser" />79    <xsl:param name="rightEncloser" />
79    <xsl:param name="selector"/>80    <xsl:param name="selector"/>
8081
81    <xsl:value-of select="$leftEncloser"/>82    <xsl:value-of select="$leftEncloser"/>
82    <xsl:for-each select="*">83    <xsl:for-each select="*">
83      <xsl:apply-templates select="."/>84      <xsl:apply-templates select="."/>
84      <xsl:if test="not (position()=last())">        85      <xsl:if test="not (position()=last())">        
85        <xsl:value-of select="$delimiter"/>86        <xsl:value-of select="$delimiter"/>
86      </xsl:if>       87      </xsl:if>       
87    </xsl:for-each>88    </xsl:for-each>
88    <xsl:value-of select="$rightEncloser"/>89    <xsl:value-of select="$rightEncloser"/>
89  </xsl:template>   90  </xsl:template>   
9091
9192
92  <xsl:template name="parenthesizedList">93  <xsl:template name="parenthesizedList">
93    <xsl:param name="delimiter" select="$COMMA_SPACE"/>94    <xsl:param name="delimiter" select="$COMMA_SPACE"/>
94    <xsl:call-template name="delimitedList">95    <xsl:call-template name="delimitedList">
95      <xsl:with-param name="delimiter" select="$delimiter" />96      <xsl:with-param name="delimiter" select="$delimiter" />
96      <xsl:with-param name="leftEncloser" select="$LPAREN"/>97      <xsl:with-param name="leftEncloser" select="$LPAREN"/>
97      <xsl:with-param name="rightEncloser" select="$RPAREN"/>98      <xsl:with-param name="rightEncloser" select="$RPAREN"/>
98    </xsl:call-template>99    </xsl:call-template>
99  </xsl:template>100  </xsl:template>
100101
101102
102  <xsl:template name="commaSeparatedList">103  <xsl:template name="commaSeparatedList">
103    <xsl:call-template name="delimitedList">104    <xsl:call-template name="delimitedList">
104      <xsl:with-param name="delimiter">105      <xsl:with-param name="delimiter">
105        <xsl:value-of select="$COMMA_SPACE"/>106        <xsl:value-of select="$COMMA_SPACE"/>
106      </xsl:with-param>107      </xsl:with-param>
107    </xsl:call-template>108    </xsl:call-template>
108  </xsl:template>109  </xsl:template>
109110
110111
111  <xsl:template name="quote">112  <xsl:template name="quote">
112    <xsl:param name="item"/>113    <xsl:param name="item"/>
113    <xsl:value-of select="$DOUBLEQUOTE"/>114    <xsl:value-of select="$DOUBLEQUOTE"/>
114    <xsl:call-template name="globalReplace">115    <xsl:call-template name="globalReplace">
115      <xsl:with-param name="stringToBeFixed">116      <xsl:with-param name="stringToBeFixed">
116        <xsl:call-template name="globalReplace">117        <xsl:call-template name="globalReplace">
117          <xsl:with-param name="stringToBeFixed">118          <xsl:with-param name="stringToBeFixed">
118            <xsl:call-template name="globalReplace">119            <xsl:call-template name="globalReplace">
119              <xsl:with-param name="stringToBeFixed">120              <xsl:with-param name="stringToBeFixed">
120                <xsl:call-template name="globalReplace">121                <xsl:call-template name="globalReplace">
121                  <xsl:with-param name="stringToBeFixed">122                  <xsl:with-param name="stringToBeFixed">
122                    <xsl:call-template name="globalReplace">123                    <xsl:call-template name="globalReplace">
123                      <xsl:with-param name="stringToBeFixed">124                      <xsl:with-param name="stringToBeFixed">
124                        <xsl:call-template name="globalReplace">125                        <xsl:call-template name="globalReplace">
125                          <xsl:with-param name="stringToBeFixed">126                          <xsl:with-param name="stringToBeFixed">
126                            <xsl:value-of select="$item"/>127                            <xsl:value-of select="$item"/>
127                          </xsl:with-param>128                          </xsl:with-param>
128                          <xsl:with-param name="toBeReplaced">&amp;</xsl:with-param>129                          <xsl:with-param name="toBeReplaced">&amp;</xsl:with-param>
129                          <xsl:with-param name="replacement">&amp;amp;</xsl:with-param>130                          <xsl:with-param name="replacement">&amp;amp;</xsl:with-param>
130                        </xsl:call-template>131                        </xsl:call-template>
131                                      </xsl:with-param>132                                      </xsl:with-param>
132                      <xsl:with-param name="toBeReplaced">&lt;</xsl:with-param>133                      <xsl:with-param name="toBeReplaced">&lt;</xsl:with-param>
133                      <xsl:with-param name="replacement">&amp;lt;</xsl:with-param>134                      <xsl:with-param name="replacement">&amp;lt;</xsl:with-param>
134                    </xsl:call-template>135                    </xsl:call-template>
135                  </xsl:with-param>136                  </xsl:with-param>
136                  <xsl:with-param name="toBeReplaced" select="'&#x85;'"/>137                  <xsl:with-param name="toBeReplaced" select="'&#x85;'"/>
137                  <xsl:with-param name="replacement">&amp;#x85;</xsl:with-param>138                  <xsl:with-param name="replacement">&amp;#x85;</xsl:with-param>
138                </xsl:call-template>139                </xsl:call-template>
139              </xsl:with-param>140              </xsl:with-param>
140              <xsl:with-param name="toBeReplaced" select="'&#xD;'"/>141              <xsl:with-param name="toBeReplaced" select="'&#xD;'"/>
141              <xsl:with-param name="replacement">&amp;#xD;</xsl:with-param>142              <xsl:with-param name="replacement">&amp;#xD;</xsl:with-param>
142            </xsl:call-template>143            </xsl:call-template>
143          </xsl:with-param>144          </xsl:with-param>
144          <xsl:with-param name="toBeReplaced" select="'&#x2028;'"/>145          <xsl:with-param name="toBeReplaced" select="'&#x2028;'"/>
145          <xsl:with-param name="replacement">&amp;#x2028;</xsl:with-param>146          <xsl:with-param name="replacement">&amp;#x2028;</xsl:with-param>
146        </xsl:call-template>147        </xsl:call-template>
147      </xsl:with-param>148      </xsl:with-param>
148      <xsl:with-param name="toBeReplaced"><xsl:text>"</xsl:text></xsl:with-param>149      <xsl:with-param name="toBeReplaced"><xsl:text>"</xsl:text></xsl:with-param>
149      <xsl:with-param name="replacement"><xsl:text>""</xsl:text></xsl:with-param>150      <xsl:with-param name="replacement"><xsl:text>""</xsl:text></xsl:with-param>
150    </xsl:call-template>151    </xsl:call-template>
151    <xsl:value-of select="$DOUBLEQUOTE"/>152    <xsl:value-of select="$DOUBLEQUOTE"/>
152  </xsl:template>153  </xsl:template>
153154
154155
155  <xsl:template name="globalReplace">156  <xsl:template name="globalReplace">
156    <xsl:param name="stringToBeFixed"/>157    <xsl:param name="stringToBeFixed"/>
157    <xsl:param name="toBeReplaced"/>158    <xsl:param name="toBeReplaced"/>
158    <xsl:param name="replacement"/>159    <xsl:param name="replacement"/>
159    <xsl:choose>160    <xsl:choose>
160      <xsl:when test="contains($stringToBeFixed, $toBeReplaced)">161      <xsl:when test="contains($stringToBeFixed, $toBeReplaced)">
161        <xsl:value-of select="concat(substring-before($stringToBeFixed, $toBeReplaced), $replacement)"/>162        <xsl:value-of select="concat(substring-before($stringToBeFixed, $toBeReplaced), $replacement)"/>
162        <xsl:call-template name="globalReplace">163        <xsl:call-template name="globalReplace">
163          <xsl:with-param name="stringToBeFixed" select="substring-after($stringToBeFixed, $toBeReplaced)"/>164          <xsl:with-param name="stringToBeFixed" select="substring-after($stringToBeFixed, $toBeReplaced)"/>
164          <xsl:with-param name="toBeReplaced" select="$toBeReplaced"/>165          <xsl:with-param name="toBeReplaced" select="$toBeReplaced"/>
165          <xsl:with-param name="replacement" select="$replacement"/>166          <xsl:with-param name="replacement" select="$replacement"/>
166        </xsl:call-template>167        </xsl:call-template>
167      </xsl:when>168      </xsl:when>
168      <xsl:otherwise>169      <xsl:otherwise>
169        <xsl:value-of select="$stringToBeFixed"/>170        <xsl:value-of select="$stringToBeFixed"/>
170      </xsl:otherwise>171      </xsl:otherwise>
171    </xsl:choose>172    </xsl:choose>
172  </xsl:template>173  </xsl:template>
173174
174175
175  <xsl:template name="renderQName">176  <xsl:template name="renderQName">
176    <xsl:if test="@xqx:prefix">177    <xsl:if test="@xqx:prefix">
177      <xsl:value-of select="@xqx:prefix"/>178      <xsl:value-of select="@xqx:prefix"/>
178      <xsl:value-of select="$COLON"/>179      <xsl:value-of select="$COLON"/>
179    </xsl:if>180    </xsl:if>
180    <xsl:value-of select="."/>181    <xsl:value-of select="."/>
181  </xsl:template>182  </xsl:template>
182183
183184
184  <xsl:template name="renderEQName"185  <xsl:template name="renderEQName"
185                match="xqx:QName | xqx:pragmaName | xqx:typeName | xqx:varName |186                match="xqx:QName | xqx:pragmaName | xqx:typeName | xqx:varName |
186                       xqx:functionName | xqx:optionName | xqx:annotationName |187                       xqx:functionName | xqx:optionName | xqx:annotationName |
187                       xqx:atomicType | xqx:tagName | xqx:name | xqx:decimalFormatName">188                       xqx:atomicType | xqx:tagName | xqx:name | xqx:decimalFormatName">
188    <xsl:choose>189    <xsl:choose>
189      <xsl:when test="xqx:tagName/parent::xqx:elementConstructor">190      <xsl:when test="xqx:tagName/parent::xqx:elementConstructor">
190        <xsl:call-template name="renderQName"/>191        <xsl:call-template name="renderQName"/>
191      </xsl:when>192      </xsl:when>
192      <xsl:otherwise>193      <xsl:otherwise>
193        <xsl:choose>194        <xsl:choose>
194          <xsl:when test="@xqx:prefix and @xqx:URI">195          <xsl:when test="@xqx:prefix and @xqx:URI">
195            <xsl:message terminate="yes">Incorrect XQueryX: Elements of type xqx:EQName must not have both 'prefix' and 
'URI' attributes</xsl:message>
196            <xsl:message terminate="yes">Incorrect XQueryX: Elements of type xqx:EQName must not have both 'prefix' and 
'URI' attributes</xsl:message>
196          </xsl:when>197          </xsl:when>
197          <xsl:when test="@xqx:prefix">198          <xsl:when test="@xqx:prefix">
198            <xsl:value-of select="@xqx:prefix"/>199            <xsl:value-of select="@xqx:prefix"/>
199            <xsl:value-of select="$COLON"/>200            <xsl:value-of select="$COLON"/>
200            <xsl:value-of select="."/>201            <xsl:value-of select="."/>
201          </xsl:when>202          </xsl:when>
202          <xsl:when test="@xqx:URI">203          <xsl:when test="@xqx:URI">
203            <xsl:text>Q</xsl:text>204            <xsl:text>Q</xsl:text>
204            <xsl:value-of select="$LBRACE"/>205            <xsl:value-of select="$LBRACE"/>
205            <xsl:value-of select="@xqx:URI"/>206            <xsl:value-of select="@xqx:URI"/>
206            <xsl:value-of select="$RBRACE"/>207            <xsl:value-of select="$RBRACE"/>
207            <xsl:value-of select="."/>208            <xsl:value-of select="."/>
208          </xsl:when>209          </xsl:when>
209          <xsl:otherwise>210          <xsl:otherwise>
210            <xsl:value-of select="."/>211            <xsl:value-of select="."/>
211          </xsl:otherwise>212          </xsl:otherwise>
212        </xsl:choose>213        </xsl:choose>
213      </xsl:otherwise>214      </xsl:otherwise>
214    </xsl:choose>215    </xsl:choose>
215  </xsl:template>216  </xsl:template>
216217
217218
218  <xsl:template match="xqx:attributeName">219  <xsl:template match="xqx:attributeName">
219    <xsl:choose>220    <xsl:choose>
220      <xsl:when test="@xqx:prefix='xmlns'">221      <xsl:when test="@xqx:prefix='xmlns'">
221        <xsl:message terminate="yes">Incorrect XQueryX: Attribute names are not permitted to have prefix 'xmlns'; use xq
x:namespaceDeclaration to declare namespaces</xsl:message>
222        <xsl:message terminate="yes">Incorrect XQueryX: Attribute names are not permitted to have prefix 'xmlns'; use xq
x:namespaceDeclaration to declare namespaces</xsl:message>
222      </xsl:when>223      </xsl:when>
223      <xsl:when test=". = 'xmlns'">224      <xsl:when test=". = 'xmlns'">
224        <xsl:message terminate="yes">Incorrect XQueryX: Attribute names are not permitted to be 'xmlns'; use xqx:namespa
ceDeclaration to declare namespaces</xsl:message>
225        <xsl:message terminate="yes">Incorrect XQueryX: Attribute names are not permitted to be 'xmlns'; use xqx:namespa
ceDeclaration to declare namespaces</xsl:message>
225      </xsl:when>226      </xsl:when>
226      <xsl:otherwise>227      <xsl:otherwise>
227        <xsl:call-template name="renderQName"/>228        <xsl:call-template name="renderQName"/>
228      </xsl:otherwise>229      </xsl:otherwise>
229    </xsl:choose>230    </xsl:choose>
230  </xsl:template>231  </xsl:template>
231232
232233
233  <xsl:template match="xqx:NCName">234  <xsl:template match="xqx:NCName">
234    <xsl:value-of select="."/>235    <xsl:value-of select="."/>
235  </xsl:template>236  </xsl:template>
236237
237238
238  <xsl:template match="xqx:rootExpr">239  <xsl:template match="xqx:rootExpr">
239    <xsl:value-of select="$SLASH"/>240    <xsl:value-of select="$SLASH"/>
240  </xsl:template>241  </xsl:template>
241242
242243
243  <xsl:template match="xqx:argumentPlaceholder">244  <xsl:template match="xqx:argumentPlaceholder">
244    <xsl:value-of select="$QUESTIONMARK"/>245    <xsl:value-of select="$QUESTIONMARK"/>
245  </xsl:template>246  </xsl:template>
246247
247248
248  <xsl:template match="xqx:pathExpr/xqx:rootExpr">249  <xsl:template match="xqx:pathExpr/xqx:rootExpr">
249    <xsl:if test="not(following-sibling::xqx:stepExpr)">250    <xsl:if test="not(following-sibling::xqx:stepExpr)">
250      <xsl:value-of select="$LPAREN"/>251      <xsl:value-of select="$LPAREN"/>
251    </xsl:if>252    </xsl:if>
252    <xsl:value-of select="$SPACE"/>253    <xsl:value-of select="$SPACE"/>
253    <xsl:value-of select="$SLASH"/>254    <xsl:value-of select="$SLASH"/>
254    <xsl:value-of select="$SPACE"/>255    <xsl:value-of select="$SPACE"/>
255    <xsl:if test="not(following-sibling::xqx:stepExpr)">256    <xsl:if test="not(following-sibling::xqx:stepExpr)">
256      <xsl:value-of select="$RPAREN"/>257      <xsl:value-of select="$RPAREN"/>
257    </xsl:if>258    </xsl:if>
258  </xsl:template>259  </xsl:template>
259260
260261
261  <xsl:template match="xqx:contextItemExpr">262  <xsl:template match="xqx:contextItemExpr">
262    <xsl:value-of select="$DOT"/>263    <xsl:value-of select="$DOT"/>
263  </xsl:template>264  </xsl:template>
264265
265266
266  <xsl:template match="xqx:stringConstantExpr | xqx:stringLiteral">267  <xsl:template match="xqx:stringConstantExpr | xqx:stringLiteral">
267    <xsl:call-template name="quote">268    <xsl:call-template name="quote">
268      <xsl:with-param name="item" select="xqx:value"/>269      <xsl:with-param name="item" select="xqx:value"/>
269    </xsl:call-template>270    </xsl:call-template>
270  </xsl:template>271  </xsl:template>
271272
272273
273]]><phrase diff="chg" at="2014-07-14"><![CDATA[<!-- 2014-08-28/JM Added integerLiteral for use in lookup (formerly mapLo
okup) -->
274]]><phrase diff="chg" at="2014-07-14"><![CDATA[<!-- 2014-08-28/JM Added integerLiteral for use in lookup (formerly mapLo
okup) -->
274  <xsl:template match="xqx:integerConstantExpr |275  <xsl:template match="xqx:integerConstantExpr |
275                       xqx:integerLiteral      |276                       xqx:integerLiteral      |
276]]></phrase><![CDATA[                       xqx:decimalConstantExpr |277]]></phrase><![CDATA[                       xqx:decimalConstantExpr |
277                       xqx:doubleConstantExpr">278                       xqx:doubleConstantExpr">
278    <xsl:value-of select="xqx:value"/>279    <xsl:value-of select="xqx:value"/>
279  </xsl:template>280  </xsl:template>
280281
281282
282]]><phrase diff="chg" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Added variiableRef for use in arrowExpr -->283]]><phrase diff="chg" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Added variiableRef for use in arrowExpr -->
283  <xsl:template match="xqx:varRef | xqx:variableRef">284  <xsl:template match="xqx:varRef | xqx:variableRef">
284]]></phrase><![CDATA[    <xsl:value-of select="$DOLLAR"/>285]]></phrase><![CDATA[    <xsl:value-of select="$DOLLAR"/>
285    <xsl:apply-templates select="xqx:name"/>286    <xsl:apply-templates select="xqx:name"/>
286  </xsl:template>287  </xsl:template>
287288
288289
289  <xsl:template match="xqx:pragma">290  <xsl:template match="xqx:pragma">
290    <xsl:value-of select="$PRAGMA_BEGIN"/>291    <xsl:value-of select="$PRAGMA_BEGIN"/>
291    <xsl:apply-templates select="xqx:pragmaName"/>292    <xsl:apply-templates select="xqx:pragmaName"/>
292    <xsl:value-of select="$SPACE"/>293    <xsl:value-of select="$SPACE"/>
293    <xsl:value-of select="xqx:pragmaContents"/>294    <xsl:value-of select="xqx:pragmaContents"/>
294    <xsl:value-of select="$PRAGMA_END"/>295    <xsl:value-of select="$PRAGMA_END"/>
295  </xsl:template>296  </xsl:template>
296297
297298
298  <xsl:template match="xqx:extensionExpr">299  <xsl:template match="xqx:extensionExpr">
299    <xsl:apply-templates select="xqx:pragma"/>300    <xsl:apply-templates select="xqx:pragma"/>
300    <xsl:value-of select="$LBRACE"/>301    <xsl:value-of select="$LBRACE"/>
301    <xsl:apply-templates select="xqx:argExpr"/>302    <xsl:apply-templates select="xqx:argExpr"/>
302    <xsl:value-of select="$RBRACE"/>303    <xsl:value-of select="$RBRACE"/>
303  </xsl:template>304  </xsl:template>
304305
305  <xsl:template match="xqx:simpleMapExpr">306  <xsl:template match="xqx:simpleMapExpr">
306    <xsl:value-of select="$LPAREN"/>307    <xsl:value-of select="$LPAREN"/>
307    <xsl:value-of select="$SPACE"/>308    <xsl:value-of select="$SPACE"/>
308    <xsl:apply-templates select="xqx:pathExpr[1]"/>309    <xsl:apply-templates select="xqx:pathExpr[1]"/>
309    <xsl:value-of select="$SPACE"/>310    <xsl:value-of select="$SPACE"/>
310    <xsl:value-of select="$RPAREN"/>311    <xsl:value-of select="$RPAREN"/>
311    <xsl:for-each select="xqx:pathExpr[position() != 1]">312    <xsl:for-each select="xqx:pathExpr[position() != 1]">
312      <xsl:value-of select="$NEWLINE"/>313      <xsl:value-of select="$NEWLINE"/>
313      <xsl:value-of select="$EXCLAMATIONMARK"/>314      <xsl:value-of select="$EXCLAMATIONMARK"/>
314      <xsl:value-of select="$SPACE"/>315      <xsl:value-of select="$SPACE"/>
315      <xsl:value-of select="$LPAREN"/>316      <xsl:value-of select="$LPAREN"/>
316      <xsl:value-of select="$SPACE"/>317      <xsl:value-of select="$SPACE"/>
317      <xsl:apply-templates select="."/>318      <xsl:apply-templates select="."/>
318      <xsl:value-of select="$SPACE"/>319      <xsl:value-of select="$SPACE"/>
319      <xsl:value-of select="$RPAREN"/>320      <xsl:value-of select="$RPAREN"/>
320    </xsl:for-each>321    </xsl:for-each>
321  </xsl:template>322  </xsl:template>
322323
323324
324  <xsl:template match="xqx:functionCallExpr">325  <xsl:template match="xqx:functionCallExpr">
325    <xsl:if test="(xqx:functionName = 'node' or326    <xsl:if test="(xqx:functionName = 'node' or
326                   xqx:functionName = 'document-node' or327                   xqx:functionName = 'document-node' or
327                   xqx:functionName = 'element' or328                   xqx:functionName = 'element' or
328                   xqx:functionName = 'attribute' or329                   xqx:functionName = 'attribute' or
329                   xqx:functionName = 'schema-element' or330                   xqx:functionName = 'schema-element' or
330                   xqx:functionName = 'schema-attribute' or331                   xqx:functionName = 'schema-attribute' or
331                   xqx:functionName = 'processing-instruction' or332                   xqx:functionName = 'processing-instruction' or
332                   xqx:functionName = 'comment' or333                   xqx:functionName = 'comment' or
333                   xqx:functionName = 'text' or334                   xqx:functionName = 'text' or
334                   xqx:functionName = 'function' or335                   xqx:functionName = 'function' or
335                   xqx:functionName = 'namespace-node' or336                   xqx:functionName = 'namespace-node' or
336                   xqx:functionName = 'item' or337                   xqx:functionName = 'item' or
337                   xqx:functionName = 'if' or338                   xqx:functionName = 'if' or
338                   xqx:functionName = 'switch' or339                   xqx:functionName = 'switch' or
339                   xqx:functionName = 'typeswitch' or340                   xqx:functionName = 'typeswitch' or
340                   xqx:functionName = 'empty-sequence') and341                   xqx:functionName = 'empty-sequence') and
341                   ((not(xqx:functionName/@xqx:prefix) and not(xqx:functionName/@xqx:URI)) or342                   ((not(xqx:functionName/@xqx:prefix) and not(xqx:functionName/@xqx:URI)) or
342                    xqx:functionName/@xqx:prefix = '' or343                    xqx:functionName/@xqx:prefix = '' or
343                    xqx:functionName/@xqx:URI = '')">344                    xqx:functionName/@xqx:URI = '')">
344      <xsl:variable name="message"><xsl:text>Incorrect XQueryX: function calls must not use unqualified "reserved" name 
"</xsl:text><xsl:value-of select="xqx:functionName"/><xsl:text>"</xsl:text></xsl:variable>
345      <xsl:variable name="message"><xsl:text>Incorrect XQueryX: function calls must not use unqualified "reserved" name 
"</xsl:text><xsl:value-of select="xqx:functionName"/><xsl:text>"</xsl:text></xsl:variable>
345      <xsl:message terminate="yes"><xsl:value-of select="$message"/></xsl:message>346      <xsl:message terminate="yes"><xsl:value-of select="$message"/></xsl:message>
346    </xsl:if>347    </xsl:if>
347    <xsl:apply-templates select="xqx:functionName"/>348    <xsl:apply-templates select="xqx:functionName"/>
348    <xsl:choose>349    <xsl:choose>
349      <xsl:when test="xqx:arguments">350      <xsl:when test="xqx:arguments">
350        <xsl:for-each select="xqx:arguments">351        <xsl:for-each select="xqx:arguments">
351          <xsl:call-template name="parenthesizedList"/>352          <xsl:call-template name="parenthesizedList"/>
352        </xsl:for-each>353        </xsl:for-each>
353      </xsl:when>354      </xsl:when>
354      <xsl:otherwise>355      <xsl:otherwise>
355        <xsl:value-of select="$LPAREN"/>356        <xsl:value-of select="$LPAREN"/>
356        <xsl:value-of select="$RPAREN"/>357        <xsl:value-of select="$RPAREN"/>
357      </xsl:otherwise>358      </xsl:otherwise>
358    </xsl:choose>359    </xsl:choose>
359  </xsl:template>360  </xsl:template>
360361
361362
362  <xsl:template match="xqx:constructorFunctionExpr">363  <xsl:template match="xqx:constructorFunctionExpr">
363    <xsl:apply-templates select="xqx:typeName"/>364    <xsl:apply-templates select="xqx:typeName"/>
364    <xsl:for-each select="xqx:argExpr">365    <xsl:for-each select="xqx:argExpr">
365      <xsl:call-template name="parenthesizedList"/>366      <xsl:call-template name="parenthesizedList"/>
366    </xsl:for-each>367    </xsl:for-each>
367  </xsl:template>368  </xsl:template>
368369
369370
370  <xsl:template match="xqx:unaryMinusOp | xqx:unaryPlusOp">371  <xsl:template match="xqx:unaryMinusOp | xqx:unaryPlusOp">
371    <xsl:value-of select="$LPAREN"/>372    <xsl:value-of select="$LPAREN"/>
372     <xsl:choose>373     <xsl:choose>
373       <xsl:when test="self::xqx:unaryPlusOp"><xsl:value-of select="$PLUS"/></xsl:when>374       <xsl:when test="self::xqx:unaryPlusOp"><xsl:value-of select="$PLUS"/></xsl:when>
374       <xsl:when test="self::xqx:unaryMinusOp"><xsl:value-of select="$MINUS"/></xsl:when>375       <xsl:when test="self::xqx:unaryMinusOp"><xsl:value-of select="$MINUS"/></xsl:when>
375     </xsl:choose>376     </xsl:choose>
376    <xsl:apply-templates select="xqx:operand"/>377    <xsl:apply-templates select="xqx:operand"/>
377    <xsl:value-of select="$RPAREN"/>378    <xsl:value-of select="$RPAREN"/>
378  </xsl:template>379  </xsl:template>
379380
380381
381  <xsl:template match="xqx:addOp | xqx:subtractOp | xqx:multiplyOp382  <xsl:template match="xqx:addOp | xqx:subtractOp | xqx:multiplyOp
382                     | xqx:divOp | xqx:idivOp | xqx:modOp">383                     | xqx:divOp | xqx:idivOp | xqx:modOp">
383    <xsl:value-of select="$LPAREN"/>384    <xsl:value-of select="$LPAREN"/>
384     <xsl:apply-templates select="xqx:firstOperand"/>385     <xsl:apply-templates select="xqx:firstOperand"/>
385     <xsl:choose>386     <xsl:choose>
386       <xsl:when test="self::xqx:addOp"><xsl:value-of select="$PLUS"/></xsl:when>387       <xsl:when test="self::xqx:addOp"><xsl:value-of select="$PLUS"/></xsl:when>
387       <xsl:when test="self::xqx:subtractOp"><xsl:text> </xsl:text><xsl:value-of select="$MINUS"/><xsl:text> </xsl:text>
</xsl:when>
388       <xsl:when test="self::xqx:subtractOp"><xsl:text> </xsl:text><xsl:value-of select="$MINUS"/><xsl:text> </xsl:text>
</xsl:when>
388       <xsl:when test="self::xqx:multiplyOp"><xsl:value-of select="$STAR"/></xsl:when>389       <xsl:when test="self::xqx:multiplyOp"><xsl:value-of select="$STAR"/></xsl:when>
389       <xsl:when test="self::xqx:divOp"><xsl:text> div </xsl:text></xsl:when>390       <xsl:when test="self::xqx:divOp"><xsl:text> div </xsl:text></xsl:when>
390       <xsl:when test="self::xqx:idivOp"><xsl:text> idiv </xsl:text></xsl:when>391       <xsl:when test="self::xqx:idivOp"><xsl:text> idiv </xsl:text></xsl:when>
391       <xsl:when test="self::xqx:modOp"><xsl:text> mod </xsl:text></xsl:when>392       <xsl:when test="self::xqx:modOp"><xsl:text> mod </xsl:text></xsl:when>
392     </xsl:choose>393     </xsl:choose>
393    <xsl:apply-templates select="xqx:secondOperand"/>394    <xsl:apply-templates select="xqx:secondOperand"/>
394    <xsl:value-of select="$RPAREN"/>395    <xsl:value-of select="$RPAREN"/>
395  </xsl:template>396  </xsl:template>
396397
397398
398  <xsl:template match="xqx:stringConcatenateOp">399  <xsl:template match="xqx:stringConcatenateOp">
399    <xsl:value-of select="$LPAREN"/>400    <xsl:value-of select="$LPAREN"/>
400     <xsl:apply-templates select="xqx:firstOperand"/>401     <xsl:apply-templates select="xqx:firstOperand"/>
401     <xsl:value-of select="$CONCATENATE"/>402     <xsl:value-of select="$CONCATENATE"/>
402     <xsl:apply-templates select="xqx:secondOperand"/>403     <xsl:apply-templates select="xqx:secondOperand"/>
403    <xsl:value-of select="$RPAREN"/>404    <xsl:value-of select="$RPAREN"/>
404  </xsl:template>405  </xsl:template>
405406
406407
407  <xsl:template match="xqx:eqOp | xqx:neOp | xqx:ltOp408  <xsl:template match="xqx:eqOp | xqx:neOp | xqx:ltOp
408                     | xqx:gtOp | xqx:leOp | xqx:geOp">409                     | xqx:gtOp | xqx:leOp | xqx:geOp">
409    <xsl:value-of select="$LPAREN"/>410    <xsl:value-of select="$LPAREN"/>
410     <xsl:apply-templates select="xqx:firstOperand"/>411     <xsl:apply-templates select="xqx:firstOperand"/>
411     <xsl:choose>412     <xsl:choose>
412       <xsl:when test="self::xqx:eqOp"><xsl:text> eq </xsl:text></xsl:when>413       <xsl:when test="self::xqx:eqOp"><xsl:text> eq </xsl:text></xsl:when>
413       <xsl:when test="self::xqx:neOp"><xsl:text> ne </xsl:text></xsl:when>414       <xsl:when test="self::xqx:neOp"><xsl:text> ne </xsl:text></xsl:when>
414       <xsl:when test="self::xqx:ltOp"><xsl:text> lt </xsl:text></xsl:when>415       <xsl:when test="self::xqx:ltOp"><xsl:text> lt </xsl:text></xsl:when>
415       <xsl:when test="self::xqx:gtOp"><xsl:text> gt </xsl:text></xsl:when>416       <xsl:when test="self::xqx:gtOp"><xsl:text> gt </xsl:text></xsl:when>
416       <xsl:when test="self::xqx:leOp"><xsl:text> le </xsl:text></xsl:when>417       <xsl:when test="self::xqx:leOp"><xsl:text> le </xsl:text></xsl:when>
417       <xsl:when test="self::xqx:geOp"><xsl:text> ge </xsl:text></xsl:when>418       <xsl:when test="self::xqx:geOp"><xsl:text> ge </xsl:text></xsl:when>
418     </xsl:choose>419     </xsl:choose>
419    <xsl:apply-templates select="xqx:secondOperand"/>420    <xsl:apply-templates select="xqx:secondOperand"/>
420    <xsl:value-of select="$RPAREN"/>421    <xsl:value-of select="$RPAREN"/>
421  </xsl:template>422  </xsl:template>
422423
423424
424  <xsl:template match="xqx:equalOp | xqx:notEqualOp | xqx:lessThanOp425  <xsl:template match="xqx:equalOp | xqx:notEqualOp | xqx:lessThanOp
425                     | xqx:greaterThanOp | xqx:lessThanOrEqualOp | xqx:greaterThanOrEqualOp">426                     | xqx:greaterThanOp | xqx:lessThanOrEqualOp | xqx:greaterThanOrEqualOp">
426    <xsl:value-of select="$LPAREN"/>427    <xsl:value-of select="$LPAREN"/>
427     <xsl:apply-templates select="xqx:firstOperand"/>428     <xsl:apply-templates select="xqx:firstOperand"/>
428     <xsl:choose>429     <xsl:choose>
429       <xsl:when test="self::xqx:equalOp">430       <xsl:when test="self::xqx:equalOp">
430         <xsl:text> </xsl:text><xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>431         <xsl:text> </xsl:text><xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>
431       </xsl:when>432       </xsl:when>
432       <xsl:when test="self::xqx:notEqualOp">433       <xsl:when test="self::xqx:notEqualOp">
433         <xsl:text> !</xsl:text><xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>434         <xsl:text> !</xsl:text><xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>
434       </xsl:when>435       </xsl:when>
435       <xsl:when test="self::xqx:lessThanOp">436       <xsl:when test="self::xqx:lessThanOp">
436         <xsl:text> </xsl:text><xsl:value-of select="$LESSTHAN"/><xsl:text> </xsl:text>437         <xsl:text> </xsl:text><xsl:value-of select="$LESSTHAN"/><xsl:text> </xsl:text>
437       </xsl:when>438       </xsl:when>
438       <xsl:when test="self::xqx:greaterThanOp">439       <xsl:when test="self::xqx:greaterThanOp">
439         <xsl:text> </xsl:text><xsl:value-of select="$GREATERTHAN"/><xsl:text> </xsl:text>440         <xsl:text> </xsl:text><xsl:value-of select="$GREATERTHAN"/><xsl:text> </xsl:text>
440       </xsl:when>441       </xsl:when>
441       <xsl:when test="self::xqx:lessThanOrEqualOp">442       <xsl:when test="self::xqx:lessThanOrEqualOp">
442         <xsl:text> </xsl:text><xsl:value-of select="$LESSTHAN"/>443         <xsl:text> </xsl:text><xsl:value-of select="$LESSTHAN"/>
443         <xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>444         <xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>
444       </xsl:when>445       </xsl:when>
445       <xsl:when test="self::xqx:greaterThanOrEqualOp">446       <xsl:when test="self::xqx:greaterThanOrEqualOp">
446         <xsl:text> </xsl:text><xsl:value-of select="$GREATERTHAN"/>447         <xsl:text> </xsl:text><xsl:value-of select="$GREATERTHAN"/>
447         <xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>448         <xsl:value-of select="$EQUAL"/><xsl:text> </xsl:text>
448       </xsl:when>449       </xsl:when>
449     </xsl:choose>450     </xsl:choose>
450    <xsl:apply-templates select="xqx:secondOperand"/>451    <xsl:apply-templates select="xqx:secondOperand"/>
451    <xsl:value-of select="$RPAREN"/>452    <xsl:value-of select="$RPAREN"/>
452  </xsl:template>453  </xsl:template>
453454
454455
455  <xsl:template match="xqx:isOp | xqx:nodeBeforeOp | xqx:nodeAfterOp">456  <xsl:template match="xqx:isOp | xqx:nodeBeforeOp | xqx:nodeAfterOp">
456    <xsl:value-of select="$LPAREN"/>457    <xsl:value-of select="$LPAREN"/>
457     <xsl:apply-templates select="xqx:firstOperand"/>458     <xsl:apply-templates select="xqx:firstOperand"/>
458     <xsl:choose>459     <xsl:choose>
459       <xsl:when test="self::xqx:isOp"><xsl:text> is </xsl:text></xsl:when>460       <xsl:when test="self::xqx:isOp"><xsl:text> is </xsl:text></xsl:when>
460       <xsl:when test="self::xqx:nodeBeforeOp"><xsl:text> </xsl:text>461       <xsl:when test="self::xqx:nodeBeforeOp"><xsl:text> </xsl:text>
461         <xsl:value-of select="$LESSTHAN"/><xsl:value-of select="$LESSTHAN"/>462         <xsl:value-of select="$LESSTHAN"/><xsl:value-of select="$LESSTHAN"/>
462         <xsl:text> </xsl:text></xsl:when>463         <xsl:text> </xsl:text></xsl:when>
463       <xsl:when test="self::xqx:nodeAfterOp"><xsl:text> </xsl:text>464       <xsl:when test="self::xqx:nodeAfterOp"><xsl:text> </xsl:text>
464         <xsl:value-of select="$GREATERTHAN"/><xsl:value-of select="$GREATERTHAN"/>465         <xsl:value-of select="$GREATERTHAN"/><xsl:value-of select="$GREATERTHAN"/>
465         <xsl:text> </xsl:text></xsl:when>466         <xsl:text> </xsl:text></xsl:when>
466     </xsl:choose>467     </xsl:choose>
467    <xsl:apply-templates select="xqx:secondOperand"/>468    <xsl:apply-templates select="xqx:secondOperand"/>
468    <xsl:value-of select="$RPAREN"/>469    <xsl:value-of select="$RPAREN"/>
469  </xsl:template>470  </xsl:template>
470471
471472
472  <xsl:template match="xqx:andOp | xqx:orOp">473  <xsl:template match="xqx:andOp | xqx:orOp">
473    <xsl:value-of select="$LPAREN"/>474    <xsl:value-of select="$LPAREN"/>
474     <xsl:apply-templates select="xqx:firstOperand"/>475     <xsl:apply-templates select="xqx:firstOperand"/>
475     <xsl:choose>476     <xsl:choose>
476       <xsl:when test="self::xqx:andOp"><xsl:text> and </xsl:text></xsl:when>477       <xsl:when test="self::xqx:andOp"><xsl:text> and </xsl:text></xsl:when>
477       <xsl:when test="self::xqx:orOp"><xsl:text> or </xsl:text></xsl:when>478       <xsl:when test="self::xqx:orOp"><xsl:text> or </xsl:text></xsl:when>
478     </xsl:choose>479     </xsl:choose>
479    <xsl:apply-templates select="xqx:secondOperand"/>480    <xsl:apply-templates select="xqx:secondOperand"/>
480    <xsl:value-of select="$RPAREN"/>481    <xsl:value-of select="$RPAREN"/>
481  </xsl:template>482  </xsl:template>
482483
483484
484  <xsl:template match="xqx:unionOp | xqx:intersectOp | xqx:exceptOp">485  <xsl:template match="xqx:unionOp | xqx:intersectOp | xqx:exceptOp">
485    <xsl:value-of select="$LPAREN"/>486    <xsl:value-of select="$LPAREN"/>
486     <xsl:apply-templates select="xqx:firstOperand"/>487     <xsl:apply-templates select="xqx:firstOperand"/>
487     <xsl:choose>488     <xsl:choose>
488       <xsl:when test="self::xqx:unionOp"><xsl:text> union </xsl:text></xsl:when>489       <xsl:when test="self::xqx:unionOp"><xsl:text> union </xsl:text></xsl:when>
489       <xsl:when test="self::xqx:intersectOp"><xsl:text> intersect </xsl:text></xsl:when>490       <xsl:when test="self::xqx:intersectOp"><xsl:text> intersect </xsl:text></xsl:when>
490       <xsl:when test="self::xqx:exceptOp"><xsl:text> except </xsl:text></xsl:when>491       <xsl:when test="self::xqx:exceptOp"><xsl:text> except </xsl:text></xsl:when>
491     </xsl:choose>492     </xsl:choose>
492    <xsl:apply-templates select="xqx:secondOperand"/>493    <xsl:apply-templates select="xqx:secondOperand"/>
493    <xsl:value-of select="$RPAREN"/>494    <xsl:value-of select="$RPAREN"/>
494  </xsl:template>495  </xsl:template>
495496
496497
497  <xsl:template match="xqx:sequenceExpr">498  <xsl:template match="xqx:sequenceExpr">
498    <xsl:for-each select=".">499    <xsl:for-each select=".">
499      <xsl:call-template name="parenthesizedList">500      <xsl:call-template name="parenthesizedList">
500        <xsl:with-param name="delimiter" select="$COMMA_NEWLINE"/>501        <xsl:with-param name="delimiter" select="$COMMA_NEWLINE"/>
501      </xsl:call-template>502      </xsl:call-template>
502    </xsl:for-each>503    </xsl:for-each>
503  </xsl:template>504  </xsl:template>
504505
505506
506  <xsl:template match="xqx:rangeSequenceExpr">507  <xsl:template match="xqx:rangeSequenceExpr">
507    <xsl:value-of select="$LPAREN"/>508    <xsl:value-of select="$LPAREN"/>
508    <xsl:apply-templates select="xqx:startExpr"/>509    <xsl:apply-templates select="xqx:startExpr"/>
509    <xsl:value-of select="$TO"/>510    <xsl:value-of select="$TO"/>
510    <xsl:apply-templates select="xqx:endExpr"/>511    <xsl:apply-templates select="xqx:endExpr"/>
511    <xsl:value-of select="$RPAREN"/>512    <xsl:value-of select="$RPAREN"/>
512  </xsl:template>513  </xsl:template>
513514
514515
515  <xsl:template match="xqx:forClause">516  <xsl:template match="xqx:forClause">
516    <xsl:text> for </xsl:text>517    <xsl:text> for </xsl:text>
517    <xsl:call-template name="commaSeparatedList"/>518    <xsl:call-template name="commaSeparatedList"/>
518    <xsl:value-of select="$NEWLINE"/>519    <xsl:value-of select="$NEWLINE"/>
519  </xsl:template>520  </xsl:template>
520521
521  <xsl:template match="xqx:forClauseItem">522  <xsl:template match="xqx:forClauseItem">
522    <xsl:apply-templates/>523    <xsl:apply-templates/>
523  </xsl:template>524  </xsl:template>
524525
525  <xsl:template match="xqx:allowingEmpty">526  <xsl:template match="xqx:allowingEmpty">
526    <xsl:text> allowing empty </xsl:text>527    <xsl:text> allowing empty </xsl:text>
527  </xsl:template>528  </xsl:template>
528529
529  <xsl:template match="xqx:forExpr">530  <xsl:template match="xqx:forExpr">
530    <xsl:value-of select="$NEWLINE"/>531    <xsl:value-of select="$NEWLINE"/>
531    <xsl:text>    in </xsl:text>532    <xsl:text>    in </xsl:text>
532        <xsl:apply-templates/>533        <xsl:apply-templates/>
533  </xsl:template>534  </xsl:template>
534535
535536
536  <xsl:template match="xqx:letClause">537  <xsl:template match="xqx:letClause">
537    <xsl:text> let </xsl:text>538    <xsl:text> let </xsl:text>
538    <xsl:call-template name="commaSeparatedList"/>539    <xsl:call-template name="commaSeparatedList"/>
539    <xsl:value-of select="$NEWLINE"/>540    <xsl:value-of select="$NEWLINE"/>
540  </xsl:template>541  </xsl:template>
541542
542  <xsl:template match="xqx:letClauseItem">543  <xsl:template match="xqx:letClauseItem">
543    <xsl:apply-templates/>544    <xsl:apply-templates/>
544  </xsl:template>545  </xsl:template>
545546
546  <xsl:template match="xqx:letExpr">547  <xsl:template match="xqx:letExpr">
547    <xsl:value-of select="$SPACE"/>548    <xsl:value-of select="$SPACE"/>
548    <xsl:value-of select="$ASSIGN"/>549    <xsl:value-of select="$ASSIGN"/>
549    <xsl:value-of select="$SPACE"/>550    <xsl:value-of select="$SPACE"/>
550    <xsl:apply-templates/>551    <xsl:apply-templates/>
551  </xsl:template>552  </xsl:template>
552553
553554
554  <xsl:template match="xqx:windowClause">555  <xsl:template match="xqx:windowClause">
555    <xsl:text> for </xsl:text>556    <xsl:text> for </xsl:text>
556    <xsl:apply-templates/>557    <xsl:apply-templates/>
557    <xsl:value-of select="$NEWLINE"/>558    <xsl:value-of select="$NEWLINE"/>
558  </xsl:template>559  </xsl:template>
559560
560  <xsl:template match="xqx:tumblingWindowClause">561  <xsl:template match="xqx:tumblingWindowClause">
561    <xsl:text>   tumbling window </xsl:text>562    <xsl:text>   tumbling window </xsl:text>
562    <xsl:apply-templates select="xqx:typedVariableBinding"/>563    <xsl:apply-templates select="xqx:typedVariableBinding"/>
563    <xsl:text> in </xsl:text>564    <xsl:text> in </xsl:text>
564    <xsl:apply-templates select="xqx:bindingSequence"/>565    <xsl:apply-templates select="xqx:bindingSequence"/>
565    <xsl:value-of select="$NEWLINE"/>566    <xsl:value-of select="$NEWLINE"/>
566    <xsl:text>      </xsl:text>567    <xsl:text>      </xsl:text>
567    <xsl:apply-templates select="xqx:windowStartCondition"/>568    <xsl:apply-templates select="xqx:windowStartCondition"/>
568    <xsl:value-of select="$NEWLINE"/>569    <xsl:value-of select="$NEWLINE"/>
569    <xsl:text>      </xsl:text>570    <xsl:text>      </xsl:text>
570    <xsl:apply-templates select="xqx:windowEndCondition"/>571    <xsl:apply-templates select="xqx:windowEndCondition"/>
571  </xsl:template>572  </xsl:template>
572573
573  <xsl:template match="xqx:slidingWindowClause">574  <xsl:template match="xqx:slidingWindowClause">
574    <xsl:text>   sliding window </xsl:text>575    <xsl:text>   sliding window </xsl:text>
575    <xsl:apply-templates select="xqx:typedVariableBinding"/>576    <xsl:apply-templates select="xqx:typedVariableBinding"/>
576    <xsl:text> in </xsl:text>577    <xsl:text> in </xsl:text>
577    <xsl:apply-templates select="xqx:bindingSequence"/>578    <xsl:apply-templates select="xqx:bindingSequence"/>
578    <xsl:value-of select="$NEWLINE"/>579    <xsl:value-of select="$NEWLINE"/>
579    <xsl:text>      </xsl:text>580    <xsl:text>      </xsl:text>
580    <xsl:apply-templates select="xqx:windowStartCondition"/>581    <xsl:apply-templates select="xqx:windowStartCondition"/>
581    <xsl:value-of select="$NEWLINE"/>582    <xsl:value-of select="$NEWLINE"/>
582    <xsl:text>      </xsl:text>583    <xsl:text>      </xsl:text>
583    <xsl:apply-templates select="xqx:windowEndCondition"/>584    <xsl:apply-templates select="xqx:windowEndCondition"/>
584  </xsl:template>585  </xsl:template>
585586
586  <xsl:template match="xqx:bindingSequence">587  <xsl:template match="xqx:bindingSequence">
587    <xsl:apply-templates/>588    <xsl:apply-templates/>
588  </xsl:template>589  </xsl:template>
589590
590  <xsl:template match="xqx:windowStartCondition">591  <xsl:template match="xqx:windowStartCondition">
591    <xsl:text>start </xsl:text>592    <xsl:text>start </xsl:text>
592    <xsl:apply-templates select="xqx:windowVars"/>593    <xsl:apply-templates select="xqx:windowVars"/>
593    <xsl:text> when </xsl:text>594    <xsl:text> when </xsl:text>
594    <xsl:apply-templates select="xqx:winStartExpr"/>595    <xsl:apply-templates select="xqx:winStartExpr"/>
595  </xsl:template>596  </xsl:template>
596597
597  <xsl:template match="xqx:windowEndCondition">598  <xsl:template match="xqx:windowEndCondition">
598    <xsl:if test="@xqx:onlyEnd='true'">599    <xsl:if test="@xqx:onlyEnd='true'">
599      <xsl:text>only </xsl:text>600      <xsl:text>only </xsl:text>
600    </xsl:if>601    </xsl:if>
601    <xsl:text>end </xsl:text>602    <xsl:text>end </xsl:text>
602    <xsl:apply-templates select="xqx:windowVars"/>603    <xsl:apply-templates select="xqx:windowVars"/>
603    <xsl:text> when </xsl:text>604    <xsl:text> when </xsl:text>
604    <xsl:apply-templates select="xqx:winEndExpr"/>605    <xsl:apply-templates select="xqx:winEndExpr"/>
605  </xsl:template>606  </xsl:template>
606607
607  <xsl:template match="xqx:windowVars">608  <xsl:template match="xqx:windowVars">
608    <xsl:apply-templates select="xqx:currentItem"/>609    <xsl:apply-templates select="xqx:currentItem"/>
609    <xsl:apply-templates select="xqx:positionalVariableBinding"/>610    <xsl:apply-templates select="xqx:positionalVariableBinding"/>
610    <xsl:apply-templates select="xqx:previousItem"/>611    <xsl:apply-templates select="xqx:previousItem"/>
611    <xsl:apply-templates select="xqx:nextItem"/>612    <xsl:apply-templates select="xqx:nextItem"/>
612  </xsl:template>613  </xsl:template>
613614
614  <xsl:template match="xqx:currentItem">615  <xsl:template match="xqx:currentItem">
615    <xsl:value-of select="$DOLLAR"/>616    <xsl:value-of select="$DOLLAR"/>
616    <xsl:call-template name="renderEQName"/>617    <xsl:call-template name="renderEQName"/>
617  </xsl:template>618  </xsl:template>
618619
619  <xsl:template match="xqx:previousItem">620  <xsl:template match="xqx:previousItem">
620    <xsl:text> previous </xsl:text>621    <xsl:text> previous </xsl:text>
621    <xsl:value-of select="$DOLLAR"/>622    <xsl:value-of select="$DOLLAR"/>
622    <xsl:call-template name="renderEQName"/>623    <xsl:call-template name="renderEQName"/>
623  </xsl:template>624  </xsl:template>
624625
625  <xsl:template match="xqx:nextItem">626  <xsl:template match="xqx:nextItem">
626    <xsl:text> next </xsl:text>627    <xsl:text> next </xsl:text>
627    <xsl:value-of select="$DOLLAR"/>628    <xsl:value-of select="$DOLLAR"/>
628    <xsl:call-template name="renderEQName"/>629    <xsl:call-template name="renderEQName"/>
629  </xsl:template>630  </xsl:template>
630631
631632
632  <xsl:template match="xqx:countClause">633  <xsl:template match="xqx:countClause">
633    <xsl:text> count </xsl:text>634    <xsl:text> count </xsl:text>
634    <xsl:apply-templates/>635    <xsl:apply-templates/>
635    <xsl:value-of select="$NEWLINE"/>636    <xsl:value-of select="$NEWLINE"/>
636  </xsl:template>637  </xsl:template>
637638
638639
639  <xsl:template match="xqx:whereClause">640  <xsl:template match="xqx:whereClause">
640    <xsl:text> where </xsl:text>641    <xsl:text> where </xsl:text>
641    <xsl:apply-templates select="*"/>642    <xsl:apply-templates select="*"/>
642    <xsl:value-of select="$NEWLINE"/>643    <xsl:value-of select="$NEWLINE"/>
643  </xsl:template>644  </xsl:template>
644645
645646
646  <xsl:template match="xqx:groupByClause">647  <xsl:template match="xqx:groupByClause">
647    <xsl:text>  group by </xsl:text>648    <xsl:text>  group by </xsl:text>
648    <xsl:call-template name="commaSeparatedList"/>649    <xsl:call-template name="commaSeparatedList"/>
649    <xsl:value-of select="$NEWLINE"/>650    <xsl:value-of select="$NEWLINE"/>
650  </xsl:template>651  </xsl:template>
651652
652653
653  <xsl:template match="xqx:groupingSpec">654  <xsl:template match="xqx:groupingSpec">
654    <xsl:value-of select="$DOLLAR"/>655    <xsl:value-of select="$DOLLAR"/>
655    <xsl:apply-templates/>656    <xsl:apply-templates/>
656  </xsl:template>657  </xsl:template>
657658
658659
659  <xsl:template match="xqx:groupVarInitialize">660  <xsl:template match="xqx:groupVarInitialize">
660    <xsl:if test="xqx:typeDeclaration">661    <xsl:if test="xqx:typeDeclaration">
661      <xsl:apply-templates select="xqx:typeDeclaration"/>662      <xsl:apply-templates select="xqx:typeDeclaration"/>
662    </xsl:if>663    </xsl:if>
663    <xsl:value-of select="$SPACE"/>664    <xsl:value-of select="$SPACE"/>
664    <xsl:value-of select="$ASSIGN"/>665    <xsl:value-of select="$ASSIGN"/>
665    <xsl:value-of select="$SPACE"/>666    <xsl:value-of select="$SPACE"/>
666    <xsl:apply-templates select="xqx:varValue"/>667    <xsl:apply-templates select="xqx:varValue"/>
667  </xsl:template>668  </xsl:template>
668669
669670
670  <xsl:template match="xqx:collation">671  <xsl:template match="xqx:collation">
671    <xsl:text> collation </xsl:text>672    <xsl:text> collation </xsl:text>
672    <xsl:call-template name="quote">673    <xsl:call-template name="quote">
673      <xsl:with-param name="item">674      <xsl:with-param name="item">
674        <xsl:value-of select="."/>675        <xsl:value-of select="."/>
675      </xsl:with-param>676      </xsl:with-param>
676    </xsl:call-template>677    </xsl:call-template>
677  </xsl:template>678  </xsl:template>
678679
679680
680  <xsl:template match="xqx:emptyOrderingMode">681  <xsl:template match="xqx:emptyOrderingMode">
681    <xsl:value-of select="$SPACE"/>682    <xsl:value-of select="$SPACE"/>
682    <xsl:value-of select="."/>683    <xsl:value-of select="."/>
683  </xsl:template>684  </xsl:template>
684685
685686
686  <xsl:template match="xqx:orderingKind">687  <xsl:template match="xqx:orderingKind">
687    <xsl:value-of select="$SPACE"/>688    <xsl:value-of select="$SPACE"/>
688    <xsl:value-of select="."/>689    <xsl:value-of select="."/>
689  </xsl:template>690  </xsl:template>
690691
691692
692  <xsl:template match="xqx:orderModifier">693  <xsl:template match="xqx:orderModifier">
693    <xsl:apply-templates select="*"/>694    <xsl:apply-templates select="*"/>
694  </xsl:template>695  </xsl:template>
695696
696697
697  <xsl:template match="xqx:orderBySpec">698  <xsl:template match="xqx:orderBySpec">
698    <xsl:apply-templates select="xqx:orderByExpr"/>699    <xsl:apply-templates select="xqx:orderByExpr"/>
699    <xsl:value-of select="$SPACE"/>700    <xsl:value-of select="$SPACE"/>
700    <xsl:apply-templates select="xqx:orderModifier"/>701    <xsl:apply-templates select="xqx:orderModifier"/>
701  </xsl:template>702  </xsl:template>
702703
703704
704  <xsl:template match="xqx:orderByClause">705  <xsl:template match="xqx:orderByClause">
705    <xsl:if test="xqx:stable">706    <xsl:if test="xqx:stable">
706      <xsl:text> stable</xsl:text>707      <xsl:text> stable</xsl:text>
707    </xsl:if>708    </xsl:if>
708    <xsl:text> order by </xsl:text>709    <xsl:text> order by </xsl:text>
709    <xsl:apply-templates select="xqx:orderBySpec[1]"/>710    <xsl:apply-templates select="xqx:orderBySpec[1]"/>
710    <xsl:for-each select="xqx:orderBySpec[position() > 1]">711    <xsl:for-each select="xqx:orderBySpec[position() > 1]">
711      <xsl:value-of select="$COMMA_SPACE"/>712      <xsl:value-of select="$COMMA_SPACE"/>
712      <xsl:apply-templates select="."/>713      <xsl:apply-templates select="."/>
713    </xsl:for-each>714    </xsl:for-each>
714    <xsl:value-of select="$NEWLINE"/>715    <xsl:value-of select="$NEWLINE"/>
715  </xsl:template>716  </xsl:template>
716717
717718
718  <xsl:template match="xqx:returnClause">719  <xsl:template match="xqx:returnClause">
719    <xsl:text> return </xsl:text>720    <xsl:text> return </xsl:text>
720    <xsl:apply-templates select="*"/>721    <xsl:apply-templates select="*"/>
721    <xsl:value-of select="$NEWLINE"/>722    <xsl:value-of select="$NEWLINE"/>
722  </xsl:template>723  </xsl:template>
723724
724725
725<!-- Surrounding FLWOR expressions with parentheses completes the set -->726<!-- Surrounding FLWOR expressions with parentheses completes the set -->
726  <xsl:template match="xqx:flworExpr">727  <xsl:template match="xqx:flworExpr">
727    <xsl:value-of select="$NEWLINE"/>728    <xsl:value-of select="$NEWLINE"/>
728    <xsl:value-of select="$LPAREN"/>729    <xsl:value-of select="$LPAREN"/>
729    <xsl:apply-templates select="*"/>730    <xsl:apply-templates select="*"/>
730    <xsl:value-of select="$RPAREN"/>731    <xsl:value-of select="$RPAREN"/>
731  </xsl:template>732  </xsl:template>
732733
733734
734  <xsl:template match="xqx:ifThenElseExpr">735  <xsl:template match="xqx:ifThenElseExpr">
735    <xsl:value-of select="$LPAREN"/>736    <xsl:value-of select="$LPAREN"/>
736    <xsl:text> if </xsl:text>737    <xsl:text> if </xsl:text>
737    <xsl:value-of select="$LPAREN"/>738    <xsl:value-of select="$LPAREN"/>
738    <xsl:apply-templates select="xqx:ifClause"/>739    <xsl:apply-templates select="xqx:ifClause"/>
739    <xsl:value-of select="$RPAREN"/>740    <xsl:value-of select="$RPAREN"/>
740    <xsl:text> then </xsl:text>741    <xsl:text> then </xsl:text>
741    <xsl:apply-templates select="xqx:thenClause"/>742    <xsl:apply-templates select="xqx:thenClause"/>
742    <xsl:text> else </xsl:text>743    <xsl:text> else </xsl:text>
743    <xsl:apply-templates select="xqx:elseClause"/>744    <xsl:apply-templates select="xqx:elseClause"/>
744    <xsl:value-of select="$RPAREN"/>745    <xsl:value-of select="$RPAREN"/>
745  </xsl:template>746  </xsl:template>
746747
747748
748  <xsl:template match="xqx:positionalVariableBinding">749  <xsl:template match="xqx:positionalVariableBinding">
749    <xsl:text> at </xsl:text>750    <xsl:text> at </xsl:text>
750    <xsl:value-of select="$DOLLAR"/>751    <xsl:value-of select="$DOLLAR"/>
751    <xsl:call-template name="renderEQName"/>752    <xsl:call-template name="renderEQName"/>
752  </xsl:template>753  </xsl:template>
753754
754755
755  <xsl:template match="xqx:variableBinding">756  <xsl:template match="xqx:variableBinding">
756    <xsl:value-of select="$DOLLAR"/>757    <xsl:value-of select="$DOLLAR"/>
757    <xsl:call-template name="renderEQName"/>758    <xsl:call-template name="renderEQName"/>
758    <xsl:if test="parent::xqx:typeswitchExprCaseClause">759    <xsl:if test="parent::xqx:typeswitchExprCaseClause">
759      <xsl:text> as </xsl:text>760      <xsl:text> as </xsl:text>
760    </xsl:if>761    </xsl:if>
761  </xsl:template>762  </xsl:template>
762763
763764
764  <xsl:template match="xqx:typedVariableBinding" name="typedVariableBinding">765  <xsl:template match="xqx:typedVariableBinding" name="typedVariableBinding">
765    <xsl:value-of select="$DOLLAR"/>766    <xsl:value-of select="$DOLLAR"/>
766    <xsl:apply-templates select="xqx:varName"/>767    <xsl:apply-templates select="xqx:varName"/>
767    <xsl:apply-templates select="xqx:typeDeclaration"/>768    <xsl:apply-templates select="xqx:typeDeclaration"/>
768  </xsl:template>769  </xsl:template>
769770
770771
771  <xsl:template match="xqx:quantifiedExprInClause">772  <xsl:template match="xqx:quantifiedExprInClause">
772    <xsl:apply-templates select="xqx:typedVariableBinding"/>773    <xsl:apply-templates select="xqx:typedVariableBinding"/>
773    <xsl:text> in </xsl:text>774    <xsl:text> in </xsl:text>
774    <xsl:apply-templates select="xqx:sourceExpr"/>775    <xsl:apply-templates select="xqx:sourceExpr"/>
775  </xsl:template>776  </xsl:template>
776777
777778
778  <xsl:template match="xqx:quantifiedExpr">779  <xsl:template match="xqx:quantifiedExpr">
779    <xsl:value-of select="$LPAREN"/>780    <xsl:value-of select="$LPAREN"/>
780    <xsl:value-of select="xqx:quantifier"/>781    <xsl:value-of select="xqx:quantifier"/>
781    <xsl:value-of select="$SPACE"/>782    <xsl:value-of select="$SPACE"/>
782    <xsl:apply-templates select="xqx:quantifiedExprInClause[1]"/>783    <xsl:apply-templates select="xqx:quantifiedExprInClause[1]"/>
783    <xsl:for-each select="xqx:quantifiedExprInClause[position() > 1]">784    <xsl:for-each select="xqx:quantifiedExprInClause[position() > 1]">
784      <xsl:value-of select="$COMMA_SPACE"/>785      <xsl:value-of select="$COMMA_SPACE"/>
785      <xsl:apply-templates select="."/>786      <xsl:apply-templates select="."/>
786    </xsl:for-each>787    </xsl:for-each>
787    <xsl:text> satisfies </xsl:text>788    <xsl:text> satisfies </xsl:text>
788    <xsl:apply-templates select="xqx:predicateExpr"/>789    <xsl:apply-templates select="xqx:predicateExpr"/>
789    <xsl:value-of select="$RPAREN"/>790    <xsl:value-of select="$RPAREN"/>
790  </xsl:template>791  </xsl:template>
791792
792793
793  <xsl:template match="xqx:instanceOfExpr">794  <xsl:template match="xqx:instanceOfExpr">
794    <xsl:value-of select="$LPAREN"/>795    <xsl:value-of select="$LPAREN"/>
795    <xsl:apply-templates select="xqx:argExpr"/>796    <xsl:apply-templates select="xqx:argExpr"/>
796    <xsl:text> instance of </xsl:text>797    <xsl:text> instance of </xsl:text>
797    <xsl:apply-templates select="xqx:sequenceType"/>798    <xsl:apply-templates select="xqx:sequenceType"/>
798    <xsl:value-of select="$RPAREN"/>799    <xsl:value-of select="$RPAREN"/>
799  </xsl:template>800  </xsl:template>
800801
801802
802  <xsl:template match="xqx:castExpr">803  <xsl:template match="xqx:castExpr">
803    <xsl:value-of select="$LPAREN"/>804    <xsl:value-of select="$LPAREN"/>
804    <xsl:apply-templates select="xqx:argExpr"/>805    <xsl:apply-templates select="xqx:argExpr"/>
805    <xsl:text> cast as </xsl:text>806    <xsl:text> cast as </xsl:text>
806    <xsl:apply-templates select="xqx:singleType"/>807    <xsl:apply-templates select="xqx:singleType"/>
807    <xsl:value-of select="$RPAREN"/>808    <xsl:value-of select="$RPAREN"/>
808  </xsl:template>809  </xsl:template>
809810
810811
811]]><phrase diff="add" at="2015-02-11"><![CDATA[<!-- 2015-02-11/JM For new expr arrowExpr -->812]]><phrase diff="add" at="2015-02-11"><![CDATA[<!-- 2015-02-11/JM For new expr arrowExpr -->
812  <xsl:template match="xqx:arrowExpr">813  <xsl:template match="xqx:arrowExpr">
813    <xsl:value-of select="$LPAREN"/>814    <xsl:value-of select="$LPAREN"/>
814    <xsl:value-of select="$SPACE"/>815    <xsl:value-of select="$SPACE"/>
815    <xsl:apply-templates select="xqx:argExpr"/>816    <xsl:apply-templates select="xqx:argExpr"/>
816    <xsl:for-each select="*[not(self::xqx:argExpr) and not(self::xqx:arguments)]">817    <xsl:for-each select="*[not(self::xqx:argExpr) and not(self::xqx:arguments)]">
817      <xsl:text> =&gt; </xsl:text>818      <xsl:text> =&gt; </xsl:text>
818      <xsl:apply-templates select="."/>819      <xsl:apply-templates select="."/>
819      <xsl:choose>820      <xsl:choose>
820        <xsl:when test="following-sibling::*[1][self::xqx:arguments]">821        <xsl:when test="following-sibling::*[1][self::xqx:arguments]">
821          <xsl:for-each select="following-sibling::*[1][self::xqx:arguments]">822          <xsl:for-each select="following-sibling::*[1][self::xqx:arguments]">
822            <xsl:call-template name="parenthesizedList"/>823            <xsl:call-template name="parenthesizedList"/>
823          </xsl:for-each>824          </xsl:for-each>
824        </xsl:when>825        </xsl:when>
825        <xsl:otherwise>826        <xsl:otherwise>
826          <xsl:value-of select="$LPAREN"/>827          <xsl:value-of select="$LPAREN"/>
827          <xsl:value-of select="$RPAREN"/>828          <xsl:value-of select="$RPAREN"/>
828        </xsl:otherwise>829        </xsl:otherwise>
829      </xsl:choose>830      </xsl:choose>
830    </xsl:for-each>831    </xsl:for-each>
831    <xsl:value-of select="$SPACE"/>832    <xsl:value-of select="$SPACE"/>
832    <xsl:value-of select="$RPAREN"/>833    <xsl:value-of select="$RPAREN"/>
833  </xsl:template>834  </xsl:template>
834835
835836
836]]></phrase><![CDATA[  <xsl:template match="xqx:castableExpr">837]]></phrase><![CDATA[  <xsl:template match="xqx:castableExpr">
837    <xsl:value-of select="$LPAREN"/>838    <xsl:value-of select="$LPAREN"/>
838    <xsl:apply-templates select="xqx:argExpr"/>839    <xsl:apply-templates select="xqx:argExpr"/>
839    <xsl:text> castable as </xsl:text>840    <xsl:text> castable as </xsl:text>
840    <xsl:apply-templates select="xqx:singleType"/>841    <xsl:apply-templates select="xqx:singleType"/>
841    <xsl:value-of select="$RPAREN"/>842    <xsl:value-of select="$RPAREN"/>
842  </xsl:template>843  </xsl:template>
843844
844845
845  <xsl:template match="xqx:treatExpr">846  <xsl:template match="xqx:treatExpr">
846    <xsl:value-of select="$LPAREN"/>847    <xsl:value-of select="$LPAREN"/>
847    <xsl:apply-templates select="xqx:argExpr"/>848    <xsl:apply-templates select="xqx:argExpr"/>
848    <xsl:text> treat as </xsl:text>849    <xsl:text> treat as </xsl:text>
849    <xsl:apply-templates select="xqx:sequenceType"/>850    <xsl:apply-templates select="xqx:sequenceType"/>
850    <xsl:value-of select="$RPAREN"/>851    <xsl:value-of select="$RPAREN"/>
851  </xsl:template>852  </xsl:template>
852853
853854
854  <xsl:template match="xqx:switchExprCaseClause">855  <xsl:template match="xqx:switchExprCaseClause">
855    <xsl:for-each select="xqx:switchCaseExpr">856    <xsl:for-each select="xqx:switchCaseExpr">
856      <xsl:value-of select="$NEWLINE"/>857      <xsl:value-of select="$NEWLINE"/>
857      <xsl:text>   case (</xsl:text>858      <xsl:text>   case (</xsl:text>
858      <xsl:apply-templates select="."/>859      <xsl:apply-templates select="."/>
859      <xsl:text>) </xsl:text>860      <xsl:text>) </xsl:text>
860    </xsl:for-each>861    </xsl:for-each>
861    <xsl:value-of select="$NEWLINE"/>862    <xsl:value-of select="$NEWLINE"/>
862    <xsl:text>     return </xsl:text>863    <xsl:text>     return </xsl:text>
863    <xsl:apply-templates select="xqx:resultExpr"/>864    <xsl:apply-templates select="xqx:resultExpr"/>
864  </xsl:template>865  </xsl:template>
865866
866  <xsl:template match="xqx:switchExprDefaultClause">867  <xsl:template match="xqx:switchExprDefaultClause">
867    <xsl:value-of select="$NEWLINE"/>868    <xsl:value-of select="$NEWLINE"/>
868    <xsl:text>   default return </xsl:text>869    <xsl:text>   default return </xsl:text>
869    <xsl:apply-templates select="xqx:resultExpr"/>870    <xsl:apply-templates select="xqx:resultExpr"/>
870  </xsl:template>871  </xsl:template>
871872
872873
873  <xsl:template match="xqx:switchExpr">874  <xsl:template match="xqx:switchExpr">
874    <xsl:value-of select="$LPAREN"/>875    <xsl:value-of select="$LPAREN"/>
875    <xsl:text>switch</xsl:text>876    <xsl:text>switch</xsl:text>
876    <xsl:value-of select="$LPAREN"/>877    <xsl:value-of select="$LPAREN"/>
877    <xsl:apply-templates select="xqx:argExpr"/>878    <xsl:apply-templates select="xqx:argExpr"/>
878    <xsl:value-of select="$RPAREN"/>879    <xsl:value-of select="$RPAREN"/>
879    <xsl:apply-templates select="xqx:switchExprCaseClause"/>880    <xsl:apply-templates select="xqx:switchExprCaseClause"/>
880    <xsl:apply-templates select="xqx:switchExprDefaultClause"/>881    <xsl:apply-templates select="xqx:switchExprDefaultClause"/>
881    <xsl:value-of select="$RPAREN"/>882    <xsl:value-of select="$RPAREN"/>
882  </xsl:template>883  </xsl:template>
883884
884885
885  <xsl:template match="xqx:typeswitchExprCaseClause">886  <xsl:template match="xqx:typeswitchExprCaseClause">
886    <xsl:text> case </xsl:text>887    <xsl:text> case </xsl:text>
887    <xsl:apply-templates select="xqx:variableBinding"/>888    <xsl:apply-templates select="xqx:variableBinding"/>
888    <xsl:apply-templates select="xqx:sequenceType | xqx:sequenceTypeUnion"/>889    <xsl:apply-templates select="xqx:sequenceType | xqx:sequenceTypeUnion"/>
889    <xsl:text> return </xsl:text>890    <xsl:text> return </xsl:text>
890    <xsl:apply-templates select="xqx:resultExpr"/>891    <xsl:apply-templates select="xqx:resultExpr"/>
891  </xsl:template>892  </xsl:template>
892893
893894
894  <xsl:template match="xqx:typeswitchExprDefaultClause">895  <xsl:template match="xqx:typeswitchExprDefaultClause">
895    <xsl:text> default </xsl:text>896    <xsl:text> default </xsl:text>
896    <xsl:apply-templates select="xqx:variableBinding"/>897    <xsl:apply-templates select="xqx:variableBinding"/>
897    <xsl:text> return </xsl:text>898    <xsl:text> return </xsl:text>
898    <xsl:apply-templates select="xqx:resultExpr"/>899    <xsl:apply-templates select="xqx:resultExpr"/>
899  </xsl:template>900  </xsl:template>
900901
901902
902  <xsl:template match="xqx:typeswitchExpr">903  <xsl:template match="xqx:typeswitchExpr">
903    <xsl:value-of select="$LPAREN"/>904    <xsl:value-of select="$LPAREN"/>
904    <xsl:text>typeswitch</xsl:text>905    <xsl:text>typeswitch</xsl:text>
905    <xsl:value-of select="$LPAREN"/>906    <xsl:value-of select="$LPAREN"/>
906    <xsl:apply-templates select="xqx:argExpr"/>907    <xsl:apply-templates select="xqx:argExpr"/>
907    <xsl:value-of select="$RPAREN"/>908    <xsl:value-of select="$RPAREN"/>
908    <xsl:apply-templates select="xqx:typeswitchExprCaseClause"/>909    <xsl:apply-templates select="xqx:typeswitchExprCaseClause"/>
909    <xsl:apply-templates select="xqx:typeswitchExprDefaultClause"/>910    <xsl:apply-templates select="xqx:typeswitchExprDefaultClause"/>
910    <xsl:value-of select="$RPAREN"/>911    <xsl:value-of select="$RPAREN"/>
911  </xsl:template>912  </xsl:template>
912913
913914
914  <xsl:template match="xqx:tryCatchExpr">915  <xsl:template match="xqx:tryCatchExpr">
915    <xsl:value-of select="$NEWLINE"/>916    <xsl:value-of select="$NEWLINE"/>
916    <xsl:value-of select="$LPAREN"/>917    <xsl:value-of select="$LPAREN"/>
917    <xsl:text>try </xsl:text>918    <xsl:text>try </xsl:text>
918    <xsl:apply-templates select="xqx:tryClause"/>919    <xsl:apply-templates select="xqx:tryClause"/>
919    <xsl:apply-templates select="xqx:catchClause"/>920    <xsl:apply-templates select="xqx:catchClause"/>
920    <xsl:value-of select="$RPAREN"/>921    <xsl:value-of select="$RPAREN"/>
921  </xsl:template>922  </xsl:template>
922923
923924
924  <xsl:template match="xqx:tryClause">925  <xsl:template match="xqx:tryClause">
925    <xsl:value-of select="$LBRACE"/>926    <xsl:value-of select="$LBRACE"/>
926    <xsl:value-of select="$SPACE"/>927    <xsl:value-of select="$SPACE"/>
927    <xsl:apply-templates/>928    <xsl:apply-templates/>
928    <xsl:value-of select="$SPACE"/>929    <xsl:value-of select="$SPACE"/>
929    <xsl:value-of select="$RBRACE"/>930    <xsl:value-of select="$RBRACE"/>
930  </xsl:template>931  </xsl:template>
931932
932933
933  <xsl:template match="xqx:catchClause">934  <xsl:template match="xqx:catchClause">
934    <xsl:value-of select="$NEWLINE"/>935    <xsl:value-of select="$NEWLINE"/>
935    <xsl:text>  catch </xsl:text>936    <xsl:text>  catch </xsl:text>
936    <xsl:apply-templates select="xqx:catchErrorList"/>937    <xsl:apply-templates select="xqx:catchErrorList"/>
937    <xsl:apply-templates select="xqx:catchExpr"/>938    <xsl:apply-templates select="xqx:catchExpr"/>
938  </xsl:template>939  </xsl:template>
939940
940941
941  <xsl:template match="xqx:catchErrorList">942  <xsl:template match="xqx:catchErrorList">
942    <xsl:for-each select="xqx:nameTest | xqx:Wildcard">943    <xsl:for-each select="xqx:nameTest | xqx:Wildcard">
943      <xsl:if test="(position() mod 5) = 0">944      <xsl:if test="(position() mod 5) = 0">
944        <xsl:value-of select="$NEWLINE"/>945        <xsl:value-of select="$NEWLINE"/>
945        <xsl:text>      </xsl:text>946        <xsl:text>      </xsl:text>
946      </xsl:if>947      </xsl:if>
947      <xsl:if test="position() > 1">948      <xsl:if test="position() > 1">
948        <xsl:text>| </xsl:text>949        <xsl:text>| </xsl:text>
949      </xsl:if>950      </xsl:if>
950      <xsl:apply-templates select="."/>951      <xsl:apply-templates select="."/>
951      <xsl:value-of select="$SPACE"/>952      <xsl:value-of select="$SPACE"/>
952    </xsl:for-each>953    </xsl:for-each>
953  </xsl:template>954  </xsl:template>
954955
955956
956  <xsl:template match="xqx:catchExpr">957  <xsl:template match="xqx:catchExpr">
957    <xsl:value-of select="$NEWLINE"/>958    <xsl:value-of select="$NEWLINE"/>
958    <xsl:value-of select="$LBRACE"/>959    <xsl:value-of select="$LBRACE"/>
959    <xsl:value-of select="$SPACE"/>960    <xsl:value-of select="$SPACE"/>
960    <xsl:apply-templates/>961    <xsl:apply-templates/>
961    <xsl:value-of select="$SPACE"/>962    <xsl:value-of select="$SPACE"/>
962    <xsl:value-of select="$RBRACE"/>963    <xsl:value-of select="$RBRACE"/>
963  </xsl:template>964  </xsl:template>
964965
965966
966  <xsl:template match="xqx:validateExpr">967  <xsl:template match="xqx:validateExpr">
967    <xsl:value-of select="$LPAREN"/>968    <xsl:value-of select="$LPAREN"/>
968    <xsl:text> validate </xsl:text>969    <xsl:text> validate </xsl:text>
969    <xsl:if test="xqx:validationMode">970    <xsl:if test="xqx:validationMode">
970      <xsl:value-of select="xqx:validationMode"/>971      <xsl:value-of select="xqx:validationMode"/>
971      <xsl:value-of select="$SPACE"/>972      <xsl:value-of select="$SPACE"/>
972    </xsl:if>973    </xsl:if>
973    <xsl:if test="xqx:typeName">974    <xsl:if test="xqx:typeName">
974      <xsl:text>type </xsl:text>975      <xsl:text>type </xsl:text>
975      <xsl:apply-templates select="xqx:typeName"/>976      <xsl:apply-templates select="xqx:typeName"/>
976      <xsl:value-of select="$SPACE"/>977      <xsl:value-of select="$SPACE"/>
977    </xsl:if>978    </xsl:if>
978    <xsl:value-of select="$LBRACE"/>979    <xsl:value-of select="$LBRACE"/>
979    <xsl:apply-templates select="xqx:argExpr"/>980    <xsl:apply-templates select="xqx:argExpr"/>
980    <xsl:value-of select="$SPACE"/>981    <xsl:value-of select="$SPACE"/>
981    <xsl:value-of select="$RBRACE"/>982    <xsl:value-of select="$RBRACE"/>
982    <xsl:value-of select="$SPACE"/>983    <xsl:value-of select="$SPACE"/>
983    <xsl:value-of select="$RPAREN"/>984    <xsl:value-of select="$RPAREN"/>
984  </xsl:template>985  </xsl:template>
985986
986987
987  <xsl:template match="xqx:xpathAxis">988  <xsl:template match="xqx:xpathAxis">
988    <xsl:value-of select="."/>989    <xsl:value-of select="."/>
989    <xsl:value-of select="$DOUBLE_COLON"/>990    <xsl:value-of select="$DOUBLE_COLON"/>
990  </xsl:template>991  </xsl:template>
991992
992993
993  <xsl:template match="xqx:predicates">994  <xsl:template match="xqx:predicates">
994    <xsl:for-each select="*">995    <xsl:for-each select="*">
995      <xsl:value-of select="$LBRACKET"/>996      <xsl:value-of select="$LBRACKET"/>
996      <xsl:apply-templates select="."/>997      <xsl:apply-templates select="."/>
997      <xsl:value-of select="$RBRACKET"/>998      <xsl:value-of select="$RBRACKET"/>
998    </xsl:for-each>999    </xsl:for-each>
999  </xsl:template>1000  </xsl:template>
10001001
10011002
1002]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Used in revised stepExpr to support new alternatives l
ookup (formerly mapLookup) -->
1003]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Used in revised stepExpr to support new alternatives l
ookup (formerly mapLookup) -->
1003  <xsl:template match="xqx:predicate">1004  <xsl:template match="xqx:predicate">
1004    <xsl:value-of select="$LBRACKET"/>1005    <xsl:value-of select="$LBRACKET"/>
1005    <xsl:apply-templates/>1006    <xsl:apply-templates/>
1006    <xsl:value-of select="$RBRACKET"/>1007    <xsl:value-of select="$RBRACKET"/>
1007  </xsl:template>1008  </xsl:template>
10081009
10091010
1010]]></phrase><![CDATA[  <!-- part of higher-order functions -->1011]]></phrase><![CDATA[  <!-- part of higher-order functions -->
1011  <xsl:template match="xqx:dynamicFunctionInvocationExpr">1012  <xsl:template match="xqx:dynamicFunctionInvocationExpr">
1012    <xsl:apply-templates select="xqx:functionItem"/>1013    <xsl:apply-templates select="xqx:functionItem"/>
1013    <xsl:apply-templates select="xqx:predicates"/>1014    <xsl:apply-templates select="xqx:predicates"/>
1014    <xsl:choose>1015    <xsl:choose>
1015      <xsl:when test="xqx:arguments">1016      <xsl:when test="xqx:arguments">
1016        <xsl:for-each select="xqx:arguments">1017        <xsl:for-each select="xqx:arguments">
1017          <xsl:call-template name="parenthesizedList"/>1018          <xsl:call-template name="parenthesizedList"/>
1018        </xsl:for-each>1019        </xsl:for-each>
1019      </xsl:when>1020      </xsl:when>
1020      <xsl:otherwise>1021      <xsl:otherwise>
1021        <xsl:value-of select="$LPAREN"/>1022        <xsl:value-of select="$LPAREN"/>
1022        <xsl:value-of select="$RPAREN"/>1023        <xsl:value-of select="$RPAREN"/>
1023      </xsl:otherwise>1024      </xsl:otherwise>
1024    </xsl:choose>1025    </xsl:choose>
1025  </xsl:template>1026  </xsl:template>
10261027
10271028
1028  <!-- part of higher-order functions -->1029  <!-- part of higher-order functions -->
1029  <xsl:template match="xqx:functionItem">1030  <xsl:template match="xqx:functionItem">
1030    <xsl:apply-templates/>1031    <xsl:apply-templates/>
1031  </xsl:template>1032  </xsl:template>
10321033
10331034
1034]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Added mapConstructor                                  
               -->
1035]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-13/JM Added mapConstructor                                  
               -->
1035  <xsl:template match="xqx:mapConstructor">1036  <xsl:template match="xqx:mapConstructor">
1036     <xsl:text>map { </xsl:text>1037     <xsl:text>map { </xsl:text>
1037     <xsl:apply-templates select="xqx:mapConstructorEntry[1]"/>1038     <xsl:apply-templates select="xqx:mapConstructorEntry[1]"/>
1038     <xsl:if test="xqx:mapConstructorEntry[2]">1039     <xsl:if test="xqx:mapConstructorEntry[2]">
1039       <xsl:for-each select="xqx:mapConstructorEntry[position() > 1]">1040       <xsl:for-each select="xqx:mapConstructorEntry[position() > 1]">
1040         <xsl:text> , </xsl:text>1041         <xsl:text> , </xsl:text>
1041         <xsl:apply-templates select="."/>1042         <xsl:apply-templates select="."/>
1042       </xsl:for-each>1043       </xsl:for-each>
1043     </xsl:if>1044     </xsl:if>
1044     <xsl:text> } </xsl:text>1045     <xsl:text> } </xsl:text>
1045  </xsl:template>1046  </xsl:template>
10461047
1047<!-- 2014-07-13/JM Added mapConstructorEntry                                            -->1048<!-- 2014-07-13/JM Added mapConstructorEntry                                            -->
1048  <xsl:template match="xqx:mapConstructorEntry">1049  <xsl:template match="xqx:mapConstructorEntry">
1049    <xsl:apply-templates select="*[1]"/>1050    <xsl:apply-templates select="*[1]"/>
1050    <xsl:text> : </xsl:text>1051    <xsl:text> : </xsl:text>
1051    <xsl:apply-templates select="*[2]"/>1052    <xsl:apply-templates select="*[2]"/>
1052  </xsl:template>1053  </xsl:template>
10531054
10541055
1055<!-- 2014-07-13/JM Added arrayConstructor                                               -->1056<!-- 2014-07-13/JM Added arrayConstructor                                               -->
1056  <xsl:template match="xqx:arrayConstructor">1057  <xsl:template match="xqx:arrayConstructor">
1057   <xsl:apply-templates/>1058   <xsl:apply-templates/>
1058  </xsl:template>1059  </xsl:template>
10591060
10601061
1061<!-- 2014-07-13/JM Added squareArray                                                    -->1062<!-- 2014-07-13/JM Added squareArray                                                    -->
1062  <xsl:template match="xqx:squareArray">1063  <xsl:template match="xqx:squareArray">
1063    <xsl:text> [ </xsl:text>1064    <xsl:text> [ </xsl:text>
1064    <xsl:apply-templates select="xqx:arrayElem[1]"/>1065    <xsl:apply-templates select="xqx:arrayElem[1]"/>
1065    <xsl:if test="xqx:arrayElem[2]">1066    <xsl:if test="xqx:arrayElem[2]">
1066      <xsl:for-each select="xqx:arrayElem[position() > 1]">1067      <xsl:for-each select="xqx:arrayElem[position() > 1]">
1067        <xsl:text> , </xsl:text>1068        <xsl:text> , </xsl:text>
1068        <xsl:apply-templates select="."/>1069        <xsl:apply-templates select="."/>
1069      </xsl:for-each>1070      </xsl:for-each>
1070    </xsl:if>1071    </xsl:if>
1071    <xsl:text> ] </xsl:text>1072    <xsl:text> ] </xsl:text>
1072  </xsl:template>1073  </xsl:template>
10731074
10741075
1075<!-- 2014-07-13/JM Added curlyArray                                                    -->1076<!-- 2014-07-13/JM Added curlyArray                                                    -->
1076  <xsl:template match="xqx:curlyArray">1077  <xsl:template match="xqx:curlyArray">
1077    <xsl:text> array { </xsl:text>1078    <xsl:text> array { </xsl:text>
1078    <xsl:apply-templates/>1079    <xsl:apply-templates/>
1079    <xsl:text> } </xsl:text>1080    <xsl:text> } </xsl:text>
1080  </xsl:template>1081  </xsl:template>
10811082
10821083
1084]]></phrase><phrase diff="add" at="2015-11-05"><![CDATA[<!-- 2015-11-05/JS Added stringConstructor                      
                           -->
1085  <xsl:template match="xqx:stringConstructor">
1086    <xsl:text>``[</xsl:text>
1087    <xsl:apply-templates/>
1088    <xsl:text>]``</xsl:text>
1089  </xsl:template>
1090
1091<!-- 2015-11-05/JS Added stringConstructorInterpolation                                -->
1092  <xsl:template match="xqx:stringConstructorInterpolation">
1093    <xsl:text>`{</xsl:text>
1094    <xsl:apply-templates/>
1095    <xsl:text>}`</xsl:text>
1096  </xsl:template>
1097
1098<!-- 2015-11-05/JS Added stringConstructorChars                                        -->
1099  <xsl:template match="xqx:stringConstructorChars">
1100    <xsl:value-of select="."/>
1101  </xsl:template>
1102
1103
1083]]></phrase><![CDATA[  <xsl:template match="xqx:star">1104]]></phrase><![CDATA[  <xsl:template match="xqx:star">
1084    <xsl:value-of select="$STAR"/>1105    <xsl:value-of select="$STAR"/>
1085  </xsl:template>1106  </xsl:template>
10861107
10871108
1088  <xsl:template match="xqx:Wildcard[*]">1109  <xsl:template match="xqx:Wildcard[*]">
1089    <xsl:choose>1110    <xsl:choose>
1090      <xsl:when test="local-name(./child::*[1])='star'">1111      <xsl:when test="local-name(./child::*[1])='star'">
1091        <xsl:apply-templates select="xqx:star"/>1112        <xsl:apply-templates select="xqx:star"/>
1092        <xsl:value-of select="$COLON"/>1113        <xsl:value-of select="$COLON"/>
1093        <xsl:apply-templates select="xqx:NCName"/>1114        <xsl:apply-templates select="xqx:NCName"/>
1094      </xsl:when>1115      </xsl:when>
1095      <xsl:when test="local-name(./child::*[1])='NCName'">1116      <xsl:when test="local-name(./child::*[1])='NCName'">
1096        <xsl:apply-templates select="xqx:NCName"/>1117        <xsl:apply-templates select="xqx:NCName"/>
1097        <xsl:value-of select="$COLON"/>1118        <xsl:value-of select="$COLON"/>
1098        <xsl:apply-templates select="xqx:star"/>1119        <xsl:apply-templates select="xqx:star"/>
1099      </xsl:when>1120      </xsl:when>
1100      <xsl:when test="local-name(./child::*[1])='uri'">1121      <xsl:when test="local-name(./child::*[1])='uri'">
1101        <xsl:text>Q</xsl:text>1122        <xsl:text>Q</xsl:text>
1102        <xsl:value-of select="$LBRACE"/>1123        <xsl:value-of select="$LBRACE"/>
1103        <xsl:value-of select="./xqx:uri"/>1124        <xsl:value-of select="./xqx:uri"/>
1104        <xsl:value-of select="$RBRACE"/>1125        <xsl:value-of select="$RBRACE"/>
1105        <xsl:apply-templates select="xqx:star"/>1126        <xsl:apply-templates select="xqx:star"/>
1106      </xsl:when>1127      </xsl:when>
1107    </xsl:choose>1128    </xsl:choose>
1108  </xsl:template>1129  </xsl:template>
11091130
11101131
1111  <xsl:template match="xqx:Wildcard[not(*)]">1132  <xsl:template match="xqx:Wildcard[not(*)]">
1112    <xsl:value-of select="$STAR"/>1133    <xsl:value-of select="$STAR"/>
1113  </xsl:template>1134  </xsl:template>
11141135
11151136
1116  <xsl:template name="simpleWildcard" match="xqx:simpleWildcard">1137  <xsl:template name="simpleWildcard" match="xqx:simpleWildcard">
1117    <xsl:apply-templates select="xqx:star"/>1138    <xsl:apply-templates select="xqx:star"/>
1118    <xsl:apply-templates select="xqx:QName"/>1139    <xsl:apply-templates select="xqx:QName"/>
1119  </xsl:template>1140  </xsl:template>
11201141
11211142
1122  <xsl:template match="xqx:textTest">1143  <xsl:template match="xqx:textTest">
1123    <xsl:text>text()</xsl:text>1144    <xsl:text>text()</xsl:text>
1124  </xsl:template>1145  </xsl:template>
11251146
11261147
1127  <xsl:template match="xqx:commentTest">1148  <xsl:template match="xqx:commentTest">
1128    <xsl:text>comment()</xsl:text>1149    <xsl:text>comment()</xsl:text>
1129  </xsl:template>1150  </xsl:template>
11301151
11311152
1132  <xsl:template match="xqx:namespaceTest">1153  <xsl:template match="xqx:namespaceTest">
1133    <xsl:text>namespace-node()</xsl:text>1154    <xsl:text>namespace-node()</xsl:text>
1134  </xsl:template>1155  </xsl:template>
11351156
11361157
1137  <xsl:template match="xqx:anyKindTest">1158  <xsl:template match="xqx:anyKindTest">
1138    <xsl:text>node()</xsl:text>1159    <xsl:text>node()</xsl:text>
1139  </xsl:template>1160  </xsl:template>
11401161
11411162
1142  <xsl:template match="xqx:piTest">1163  <xsl:template match="xqx:piTest">
1143    <xsl:text>processing-instruction</xsl:text>1164    <xsl:text>processing-instruction</xsl:text>
1144    <xsl:value-of select="$LPAREN"/>1165    <xsl:value-of select="$LPAREN"/>
1145    <xsl:value-of select="*"/>1166    <xsl:value-of select="*"/>
1146    <xsl:value-of select="$RPAREN"/>1167    <xsl:value-of select="$RPAREN"/>
1147  </xsl:template>1168  </xsl:template>
11481169
11491170
1150  <xsl:template match="xqx:documentTest">1171  <xsl:template match="xqx:documentTest">
1151    <xsl:text>document-node</xsl:text>1172    <xsl:text>document-node</xsl:text>
1152    <xsl:value-of select="$LPAREN"/>1173    <xsl:value-of select="$LPAREN"/>
1153    <xsl:apply-templates select="*"/>1174    <xsl:apply-templates select="*"/>
1154    <xsl:value-of select="$RPAREN"/>1175    <xsl:value-of select="$RPAREN"/>
1155  </xsl:template>1176  </xsl:template>
11561177
1157  <xsl:template match="xqx:nameTest">1178  <xsl:template match="xqx:nameTest">
1158    <xsl:call-template name="renderEQName"/>1179    <xsl:call-template name="renderEQName"/>
1159  </xsl:template>1180  </xsl:template>
11601181
11611182
1162  <xsl:template match="xqx:attributeTest">1183  <xsl:template match="xqx:attributeTest">
1163    <xsl:text>attribute</xsl:text>1184    <xsl:text>attribute</xsl:text>
1164    <xsl:value-of select="$LPAREN"/>1185    <xsl:value-of select="$LPAREN"/>
1165    <xsl:for-each select="xqx:attributeName">1186    <xsl:for-each select="xqx:attributeName">
1166      <xsl:call-template name="simpleWildcard"/>1187      <xsl:call-template name="simpleWildcard"/>
1167    </xsl:for-each>1188    </xsl:for-each>
1168    <xsl:if test="xqx:typeName">1189    <xsl:if test="xqx:typeName">
1169      <xsl:value-of select="$COMMA"/>1190      <xsl:value-of select="$COMMA"/>
1170      <xsl:apply-templates select="xqx:typeName"/>1191      <xsl:apply-templates select="xqx:typeName"/>
1171    </xsl:if>1192    </xsl:if>
1172    <xsl:value-of select="$RPAREN"/>1193    <xsl:value-of select="$RPAREN"/>
1173  </xsl:template>1194  </xsl:template>
11741195
11751196
1176  <xsl:template match="xqx:elementTest">1197  <xsl:template match="xqx:elementTest">
1177    <xsl:text>element</xsl:text>1198    <xsl:text>element</xsl:text>
1178    <xsl:value-of select="$LPAREN"/>1199    <xsl:value-of select="$LPAREN"/>
1179    <xsl:for-each select="xqx:elementName">1200    <xsl:for-each select="xqx:elementName">
1180      <xsl:call-template name="simpleWildcard"/>1201      <xsl:call-template name="simpleWildcard"/>
1181    </xsl:for-each>1202    </xsl:for-each>
1182    <xsl:if test="xqx:typeName">1203    <xsl:if test="xqx:typeName">
1183      <xsl:value-of select="$COMMA"/>1204      <xsl:value-of select="$COMMA"/>
1184      <xsl:apply-templates select="xqx:typeName"/>1205      <xsl:apply-templates select="xqx:typeName"/>
1185    </xsl:if>1206    </xsl:if>
1186    <xsl:if test="xqx:nillable">1207    <xsl:if test="xqx:nillable">
1187      <xsl:value-of select="$QUESTIONMARK"/>1208      <xsl:value-of select="$QUESTIONMARK"/>
1188    </xsl:if>1209    </xsl:if>
1189    <xsl:value-of select="$RPAREN"/>1210    <xsl:value-of select="$RPAREN"/>
1190  </xsl:template>1211  </xsl:template>
11911212
11921213
1193  <xsl:template match="xqx:schemaElementTest">1214  <xsl:template match="xqx:schemaElementTest">
1194    <xsl:text>schema-element</xsl:text>1215    <xsl:text>schema-element</xsl:text>
1195    <xsl:value-of select="$LPAREN"/>1216    <xsl:value-of select="$LPAREN"/>
1196    <xsl:call-template name="renderEQName"/>1217    <xsl:call-template name="renderEQName"/>
1197    <xsl:value-of select="$RPAREN"/>1218    <xsl:value-of select="$RPAREN"/>
1198  </xsl:template>1219  </xsl:template>
11991220
12001221
1201  <xsl:template match="xqx:schemaAttributeTest">1222  <xsl:template match="xqx:schemaAttributeTest">
1202    <xsl:text>schema-attribute</xsl:text>1223    <xsl:text>schema-attribute</xsl:text>
1203    <xsl:value-of select="$LPAREN"/>1224    <xsl:value-of select="$LPAREN"/>
1204    <xsl:call-template name="renderEQName"/>1225    <xsl:call-template name="renderEQName"/>
1205    <xsl:value-of select="$RPAREN"/>1226    <xsl:value-of select="$RPAREN"/>
1206  </xsl:template>1227  </xsl:template>
12071228
12081229
1209  <!-- anyFunctionTest, part of higher-order functions -->1230  <!-- anyFunctionTest, part of higher-order functions -->
1210  <xsl:template match="xqx:anyFunctionTest">1231  <xsl:template match="xqx:anyFunctionTest">
1211    <xsl:apply-templates select="xqx:annotation"/>1232    <xsl:apply-templates select="xqx:annotation"/>
1212    <xsl:text> function(*)</xsl:text>1233    <xsl:text> function(*)</xsl:text>
1213  </xsl:template>1234  </xsl:template>
12141235
12151236
1216  <!-- typedFunctionTest, part of higher-order functions -->1237  <!-- typedFunctionTest, part of higher-order functions -->
1217  <xsl:template match="xqx:typedFunctionTest">1238  <xsl:template match="xqx:typedFunctionTest">
1218    <xsl:apply-templates select="xqx:annotation"/>1239    <xsl:apply-templates select="xqx:annotation"/>
1219    <xsl:text> function</xsl:text>1240    <xsl:text> function</xsl:text>
1220    <xsl:apply-templates select="xqx:paramTypeList"/>1241    <xsl:apply-templates select="xqx:paramTypeList"/>
1221    <xsl:text> as </xsl:text>1242    <xsl:text> as </xsl:text>
1222    <xsl:apply-templates select="xqx:sequenceType"/>1243    <xsl:apply-templates select="xqx:sequenceType"/>
1223  </xsl:template>1244  </xsl:template>
12241245
12251246
1226  <xsl:template match="xqx:paramTypeList">1247  <xsl:template match="xqx:paramTypeList">
1227    <xsl:call-template name="parenthesizedList"/>1248    <xsl:call-template name="parenthesizedList"/>
1228  </xsl:template>1249  </xsl:template>
12291250
12301251
1231]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-11/JM For new MapTest -->1252]]><phrase diff="add" at="2014-07-14"><![CDATA[<!-- 2014-07-11/JM For new MapTest -->
1232  <xsl:template match="xqx:anyMapTest">1253  <xsl:template match="xqx:anyMapTest">
1233    <xsl:text> map(*)</xsl:text>1254    <xsl:text> map(*)</xsl:text>
1234  </xsl:template>1255  </xsl:template>
12351256
12361257
1237<!-- 2014-07-11/JM For new MapTest -->1258<!-- 2014-07-11/JM For new MapTest -->
1238  <xsl:template match="xqx:typedMapTest">1259  <xsl:template match="xqx:typedMapTest">
1239    <xsl:text> map(</xsl:text>1260    <xsl:text> map(</xsl:text>
1240    <xsl:apply-templates select="xqx:atomicType"/>1261    <xsl:apply-templates select="xqx:atomicType"/>
1241    <xsl:text>, </xsl:text>1262    <xsl:text>, </xsl:text>
1242    <xsl:apply-templates select="xqx:sequenceType"/>1263    <xsl:apply-templates select="xqx:sequenceType"/>
1243    <xsl:text>) </xsl:text>1264    <xsl:text>) </xsl:text>
1244  </xsl:template>1265  </xsl:template>
12451266
12461267
1247<!-- 2014-07-13/JM For new stepExpr alternative lookup (formerly mapLookup) -->1268<!-- 2014-07-13/JM For new stepExpr alternative lookup (formerly mapLookup) -->
1248  <xsl:template match="xqx:lookup">1269  <xsl:template match="xqx:lookup">
1249    <xsl:text> ?</xsl:text>1270    <xsl:text> ?</xsl:text>
1250    <xsl:apply-templates/>1271    <xsl:apply-templates/>
1251  </xsl:template>1272  </xsl:template>
12521273
12531274
1254<!-- 2014-07-11/JM For new ArrayTest -->1275<!-- 2014-07-11/JM For new ArrayTest -->
1255  <xsl:template match="xqx:anyArrayTest">1276  <xsl:template match="xqx:anyArrayTest">
1256    <xsl:text> array(*)</xsl:text>1277    <xsl:text> array(*)</xsl:text>
1257  </xsl:template>1278  </xsl:template>
12581279
12591280
1260<!-- 2014-07-11/JM For new ArrayTest -->1281<!-- 2014-07-11/JM For new ArrayTest -->
1261  <xsl:template match="xqx:typedArrayTest">1282  <xsl:template match="xqx:typedArrayTest">
1262    <xsl:text> array(</xsl:text>1283    <xsl:text> array(</xsl:text>
1263    <xsl:apply-templates select="xqx:sequenceType"/>1284    <xsl:apply-templates select="xqx:sequenceType"/>
1264    <xsl:text>) </xsl:text>1285    <xsl:text>) </xsl:text>
1265  </xsl:template>1286  </xsl:template>
12661287
12671288
1268]]></phrase><![CDATA[  <!-- parenthesizedItemType, part of higher-order functions -->1289]]></phrase><![CDATA[  <!-- parenthesizedItemType, part of higher-order functions -->
1269  <xsl:template match="xqx:parenthesizedItemType">1290  <xsl:template match="xqx:parenthesizedItemType">
1270    <xsl:text> ( </xsl:text>1291    <xsl:text> ( </xsl:text>
1271    <xsl:apply-templates/>1292    <xsl:apply-templates/>
1272    <xsl:text> ) </xsl:text>1293    <xsl:text> ) </xsl:text>
1273  </xsl:template>1294  </xsl:template>
12741295
12751296
1276  <xsl:template match="xqx:stepExpr">1297  <xsl:template match="xqx:stepExpr">
1277    <xsl:if test="preceding-sibling::xqx:stepExpr">1298    <xsl:if test="preceding-sibling::xqx:stepExpr">
1278      <xsl:value-of select="$SLASH"/>1299      <xsl:value-of select="$SLASH"/>
1279    </xsl:if>1300    </xsl:if>
1280    <xsl:apply-templates select="*"/>1301    <xsl:apply-templates select="*"/>
1281  </xsl:template>1302  </xsl:template>
12821303
12831304
1284  <xsl:template match="xqx:filterExpr">1305  <xsl:template match="xqx:filterExpr">
1285    <xsl:apply-templates/>1306    <xsl:apply-templates/>
1286  </xsl:template>1307  </xsl:template>
12871308
12881309
1289  <!-- part of higher-order functions -->1310  <!-- part of higher-order functions -->
1290  <xsl:template match="xqx:namedFunctionRef">1311  <xsl:template match="xqx:namedFunctionRef">
1291    <xsl:if test="(xqx:functionName = 'node' or1312    <xsl:if test="(xqx:functionName = 'node' or
1292                   xqx:functionName = 'document-node' or1313                   xqx:functionName = 'document-node' or
1293                   xqx:functionName = 'element' or1314                   xqx:functionName = 'element' or
1294                   xqx:functionName = 'attribute' or1315                   xqx:functionName = 'attribute' or
1295                   xqx:functionName = 'schema-element' or1316                   xqx:functionName = 'schema-element' or
1296                   xqx:functionName = 'schema-attribute' or1317                   xqx:functionName = 'schema-attribute' or
1297                   xqx:functionName = 'processing-instruction' or1318                   xqx:functionName = 'processing-instruction' or
1298                   xqx:functionName = 'comment' or1319                   xqx:functionName = 'comment' or
1299                   xqx:functionName = 'text' or1320                   xqx:functionName = 'text' or
1300                   xqx:functionName = 'function' or1321                   xqx:functionName = 'function' or
1301                   xqx:functionName = 'namespace-node' or1322                   xqx:functionName = 'namespace-node' or
1302                   xqx:functionName = 'item' or1323                   xqx:functionName = 'item' or
1303                   xqx:functionName = 'if' or1324                   xqx:functionName = 'if' or
1304                   xqx:functionName = 'switch' or1325                   xqx:functionName = 'switch' or
1305                   xqx:functionName = 'typeswitch' or1326                   xqx:functionName = 'typeswitch' or
1306                   xqx:functionName = 'empty-sequence') and1327                   xqx:functionName = 'empty-sequence') and
1307                   ((not(@xqx:prefix) and not(@xqx:URI)) or1328                   ((not(@xqx:prefix) and not(@xqx:URI)) or
1308                    (@xqx:prefix and @xqx:prefix = '') or1329                    (@xqx:prefix and @xqx:prefix = '') or
1309                    (@xqx:URI and @xqx:URI = ''))">1330                    (@xqx:URI and @xqx:URI = ''))">
1310      <xsl:variable name="message"><xsl:text>Incorrect XQueryX: function calls must not use unqualified "reserved" name 
"</xsl:text><xsl:value-of select="xqx:functionName"/><xsl:text>"</xsl:text></xsl:variable>
1331      <xsl:variable name="message"><xsl:text>Incorrect XQueryX: function calls must not use unqualified "reserved" name 
"</xsl:text><xsl:value-of select="xqx:functionName"/><xsl:text>"</xsl:text></xsl:variable>
1311      <xsl:message terminate="yes"><xsl:value-of select="$message"/></xsl:message>1332      <xsl:message terminate="yes"><xsl:value-of select="$message"/></xsl:message>
1312    </xsl:if>1333    </xsl:if>
1313    <xsl:apply-templates select="xqx:functionName"/>1334    <xsl:apply-templates select="xqx:functionName"/>
1314    <xsl:text>#</xsl:text>1335    <xsl:text>#</xsl:text>
1315    <xsl:apply-templates select="xqx:integerConstantExpr"/>1336    <xsl:apply-templates select="xqx:integerConstantExpr"/>
1316  </xsl:template>1337  </xsl:template>
13171338
1318  <!-- part of higher-order functions -->1339  <!-- part of higher-order functions -->
1319  <xsl:template match="xqx:inlineFunctionExpr">1340  <xsl:template match="xqx:inlineFunctionExpr">
1320    <xsl:apply-templates select="xqx:annotation"/>1341    <xsl:apply-templates select="xqx:annotation"/>
1321    <xsl:text> function </xsl:text>1342    <xsl:text> function </xsl:text>
1322    <xsl:apply-templates select="xqx:paramList"/>1343    <xsl:apply-templates select="xqx:paramList"/>
1323    <xsl:apply-templates select="xqx:typeDeclaration"/>1344    <xsl:apply-templates select="xqx:typeDeclaration"/>
1324    <xsl:apply-templates select="xqx:functionBody"/>1345    <xsl:apply-templates select="xqx:functionBody"/>
1325  </xsl:template>1346  </xsl:template>
13261347
1327  <xsl:template match="xqx:pathExpr">1348  <xsl:template match="xqx:pathExpr">
1328    <xsl:apply-templates select="xqx:rootExpr | xqx:stepExpr"/>1349    <xsl:apply-templates select="xqx:rootExpr | xqx:stepExpr"/>
1329  </xsl:template>1350  </xsl:template>
13301351
13311352
1332  <xsl:template match="xqx:attributeConstructor">1353  <xsl:template match="xqx:attributeConstructor">
1333    <xsl:value-of select="$SPACE"/>1354    <xsl:value-of select="$SPACE"/>
1334    <xsl:apply-templates select="xqx:attributeName"/>1355    <xsl:apply-templates select="xqx:attributeName"/>
1335    <xsl:value-of select="$EQUAL"/>1356    <xsl:value-of select="$EQUAL"/>
1336    <xsl:choose>1357    <xsl:choose>
1337      <xsl:when test="xqx:attributeValue">1358      <xsl:when test="xqx:attributeValue">
1338        <xsl:call-template name="globalReplace">1359        <xsl:call-template name="globalReplace">
1339          <xsl:with-param name="stringToBeFixed">1360          <xsl:with-param name="stringToBeFixed">
1340            <xsl:call-template name="globalReplace">1361            <xsl:call-template name="globalReplace">
1341              <xsl:with-param name="stringToBeFixed">1362              <xsl:with-param name="stringToBeFixed">
1342                <xsl:call-template name="quote">1363                <xsl:call-template name="quote">
1343                  <xsl:with-param name="item">1364                  <xsl:with-param name="item">
1344                    <xsl:call-template name="globalReplace">1365                    <xsl:call-template name="globalReplace">
1345                      <xsl:with-param name="stringToBeFixed">1366                      <xsl:with-param name="stringToBeFixed">
1346                        <xsl:call-template name="globalReplace">1367                        <xsl:call-template name="globalReplace">
1347                          <xsl:with-param name="stringToBeFixed">1368                          <xsl:with-param name="stringToBeFixed">
1348                            <xsl:value-of select="xqx:attributeValue"/>1369                            <xsl:value-of select="xqx:attributeValue"/>
1349                          </xsl:with-param>1370                          </xsl:with-param>
1350                          <xsl:with-param name="toBeReplaced"><xsl:text>{</xsl:text></xsl:with-param>1371                          <xsl:with-param name="toBeReplaced"><xsl:text>{</xsl:text></xsl:with-param>
1351                          <xsl:with-param name="replacement"><xsl:text>{{</xsl:text></xsl:with-param>1372                          <xsl:with-param name="replacement"><xsl:text>{{</xsl:text></xsl:with-param>
1352                        </xsl:call-template>1373                        </xsl:call-template>
1353                      </xsl:with-param>1374                      </xsl:with-param>
1354                      <xsl:with-param name="toBeReplaced"><xsl:text>}</xsl:text></xsl:with-param>1375                      <xsl:with-param name="toBeReplaced"><xsl:text>}</xsl:text></xsl:with-param>
1355                      <xsl:with-param name="replacement"><xsl:text>}}</xsl:text></xsl:with-param>1376                      <xsl:with-param name="replacement"><xsl:text>}}</xsl:text></xsl:with-param>
1356                    </xsl:call-template>1377                    </xsl:call-template>
1357                  </xsl:with-param>1378                  </xsl:with-param>
1358                </xsl:call-template>1379                </xsl:call-template>
1359              </xsl:with-param>1380              </xsl:with-param>
1360              <xsl:with-param name="toBeReplaced" select="'&#xA;'"/>1381              <xsl:with-param name="toBeReplaced" select="'&#xA;'"/>
1361              <xsl:with-param name="replacement">&amp;#xA;</xsl:with-param>1382              <xsl:with-param name="replacement">&amp;#xA;</xsl:with-param>
1362            </xsl:call-template>1383            </xsl:call-template>
1363          </xsl:with-param>1384          </xsl:with-param>
1364          <xsl:with-param name="toBeReplaced" select="'&#x9;'"/>1385          <xsl:with-param name="toBeReplaced" select="'&#x9;'"/>
1365          <xsl:with-param name="replacement">&amp;#x9;</xsl:with-param>1386          <xsl:with-param name="replacement">&amp;#x9;</xsl:with-param>
1366        </xsl:call-template>1387        </xsl:call-template>
1367      </xsl:when>1388      </xsl:when>
1368      <xsl:otherwise>1389      <xsl:otherwise>
1369        <xsl:value-of select="$DOUBLEQUOTE"/>1390        <xsl:value-of select="$DOUBLEQUOTE"/>
1370        <xsl:for-each select="./xqx:attributeValueExpr/xqx:*">1391        <xsl:for-each select="./xqx:attributeValueExpr/xqx:*">
1371          <xsl:value-of select="$LBRACE"/>1392          <xsl:value-of select="$LBRACE"/>
1372            <xsl:apply-templates select="."/>1393            <xsl:apply-templates select="."/>
1373          <xsl:value-of select="$RBRACE"/>1394          <xsl:value-of select="$RBRACE"/>
1374        </xsl:for-each>1395        </xsl:for-each>
1375        <xsl:value-of select="$DOUBLEQUOTE"/>1396        <xsl:value-of select="$DOUBLEQUOTE"/>
1376      </xsl:otherwise>1397      </xsl:otherwise>
1377    </xsl:choose>1398    </xsl:choose>
1378  </xsl:template>1399  </xsl:template>
13791400
13801401
1381  <xsl:template match="xqx:namespaceDeclaration">1402  <xsl:template match="xqx:namespaceDeclaration">
1382    <xsl:text> xmlns</xsl:text>1403    <xsl:text> xmlns</xsl:text>
1383    <xsl:if test="xqx:prefix">1404    <xsl:if test="xqx:prefix">
1384      <xsl:text>:</xsl:text>1405      <xsl:text>:</xsl:text>
1385      <xsl:value-of select="xqx:prefix"/>1406      <xsl:value-of select="xqx:prefix"/>
1386    </xsl:if>1407    </xsl:if>
1387    <xsl:value-of select="$EQUAL"/>1408    <xsl:value-of select="$EQUAL"/>
1388    <xsl:call-template name="quote">1409    <xsl:call-template name="quote">
1389       <xsl:with-param name="item">1410       <xsl:with-param name="item">
1390         <xsl:call-template name="globalReplace">1411         <xsl:call-template name="globalReplace">
1391           <xsl:with-param name="stringToBeFixed">1412           <xsl:with-param name="stringToBeFixed">
1392             <xsl:call-template name="globalReplace">1413             <xsl:call-template name="globalReplace">
1393               <xsl:with-param name="stringToBeFixed">1414               <xsl:with-param name="stringToBeFixed">
1394                 <xsl:value-of select="xqx:uri"/>1415                 <xsl:value-of select="xqx:uri"/>
1395               </xsl:with-param>1416               </xsl:with-param>
1396               <xsl:with-param name="toBeReplaced">1417               <xsl:with-param name="toBeReplaced">
1397                 <xsl:text>{</xsl:text>1418                 <xsl:text>{</xsl:text>
1398               </xsl:with-param>1419               </xsl:with-param>
1399               <xsl:with-param name="replacement">1420               <xsl:with-param name="replacement">
1400                 <xsl:text>{{</xsl:text>1421                 <xsl:text>{{</xsl:text>
1401               </xsl:with-param>1422               </xsl:with-param>
1402             </xsl:call-template>1423             </xsl:call-template>
1403           </xsl:with-param>1424           </xsl:with-param>
1404           <xsl:with-param name="toBeReplaced">1425           <xsl:with-param name="toBeReplaced">
1405             <xsl:text>}</xsl:text>1426             <xsl:text>}</xsl:text>
1406           </xsl:with-param>1427           </xsl:with-param>
1407           <xsl:with-param name="replacement">1428           <xsl:with-param name="replacement">
1408             <xsl:text>}}</xsl:text>1429             <xsl:text>}}</xsl:text>
1409           </xsl:with-param>1430           </xsl:with-param>
1410         </xsl:call-template>1431         </xsl:call-template>
1411       </xsl:with-param>1432       </xsl:with-param>
1412    </xsl:call-template>1433    </xsl:call-template>
1413  </xsl:template>1434  </xsl:template>
14141435
14151436
1416  <xsl:template match="xqx:attributeList">1437  <xsl:template match="xqx:attributeList">
1417    <xsl:apply-templates select="*"/>1438    <xsl:apply-templates select="*"/>
1418  </xsl:template>1439  </xsl:template>
14191440
14201441
1421  <xsl:template match="xqx:elementContent">1442  <xsl:template match="xqx:elementContent">
1422    <xsl:for-each select="*">1443    <xsl:for-each select="*">
1423      <xsl:if test="not(self::xqx:elementConstructor)">1444      <xsl:if test="not(self::xqx:elementConstructor)">
1424        <xsl:value-of select="$SPACE"/>1445        <xsl:value-of select="$SPACE"/>
1425        <xsl:value-of select="$LBRACE"/>1446        <xsl:value-of select="$LBRACE"/>
1426      </xsl:if>1447      </xsl:if>
1427      <xsl:apply-templates select="."/>1448      <xsl:apply-templates select="."/>
1428      <xsl:if test="not(self::xqx:elementConstructor)">1449      <xsl:if test="not(self::xqx:elementConstructor)">
1429        <xsl:value-of select="$SPACE"/>1450        <xsl:value-of select="$SPACE"/>
1430        <xsl:value-of select="$RBRACE"/>1451        <xsl:value-of select="$RBRACE"/>
1431      </xsl:if>1452      </xsl:if>
1432    </xsl:for-each>1453    </xsl:for-each>
1433  </xsl:template>1454  </xsl:template>
14341455
14351456
1436  <xsl:template match="xqx:elementConstructor">1457  <xsl:template match="xqx:elementConstructor">
1437    <xsl:value-of select="$LESSTHAN"/>1458    <xsl:value-of select="$LESSTHAN"/>
1438    <xsl:apply-templates select="xqx:tagName"/>1459    <xsl:apply-templates select="xqx:tagName"/>
1439    <xsl:apply-templates select="xqx:attributeList"/>1460    <xsl:apply-templates select="xqx:attributeList"/>
1440    <xsl:value-of select="$GREATERTHAN"/>1461    <xsl:value-of select="$GREATERTHAN"/>
1441    <xsl:apply-templates select="xqx:elementContent"/>1462    <xsl:apply-templates select="xqx:elementContent"/>
1442    <xsl:value-of select="$LESSTHAN"/>1463    <xsl:value-of select="$LESSTHAN"/>
1443    <xsl:value-of select="$SLASH"/>1464    <xsl:value-of select="$SLASH"/>
1444    <xsl:apply-templates select="xqx:tagName"/>1465    <xsl:apply-templates select="xqx:tagName"/>
1445    <xsl:value-of select="$GREATERTHAN"/>1466    <xsl:value-of select="$GREATERTHAN"/>
1446  </xsl:template>1467  </xsl:template>
14471468
14481469
1449  <xsl:template match="xqx:tagNameExpr">1470  <xsl:template match="xqx:tagNameExpr">
1450    <xsl:value-of select="$LBRACE"/>1471    <xsl:value-of select="$LBRACE"/>
1451    <xsl:apply-templates select="*"/>1472    <xsl:apply-templates select="*"/>
1452    <xsl:value-of select="$RBRACE"/>1473    <xsl:value-of select="$RBRACE"/>
1453  </xsl:template>1474  </xsl:template>
14541475
14551476
1456  <xsl:template match="xqx:computedElementConstructor">1477  <xsl:template match="xqx:computedElementConstructor">
1457    <xsl:text> element </xsl:text>1478    <xsl:text> element </xsl:text>
1458    <xsl:apply-templates select="xqx:tagName"/>1479    <xsl:apply-templates select="xqx:tagName"/>
1459    <xsl:apply-templates select="xqx:tagNameExpr"/>1480    <xsl:apply-templates select="xqx:tagNameExpr"/>
1460    <xsl:value-of select="$SPACE"/>1481    <xsl:value-of select="$SPACE"/>
1461    <xsl:value-of select="$LBRACE"/>1482    <xsl:value-of select="$LBRACE"/>
1462    <xsl:value-of select="$SPACE"/>1483    <xsl:value-of select="$SPACE"/>
1463    <xsl:apply-templates select="xqx:contentExpr"/>     1484    <xsl:apply-templates select="xqx:contentExpr"/>     
1464    <xsl:value-of select="$SPACE"/>1485    <xsl:value-of select="$SPACE"/>
1465    <xsl:value-of select="$RBRACE"/>1486    <xsl:value-of select="$RBRACE"/>
1466  </xsl:template>1487  </xsl:template>
14671488
14681489
1469  <xsl:template match="xqx:contentExpr">1490  <xsl:template match="xqx:contentExpr">
1470    <xsl:apply-templates/>1491    <xsl:apply-templates/>
1471  </xsl:template>1492  </xsl:template>
14721493
1473  <xsl:template match="xqx:computedAttributeConstructor">1494  <xsl:template match="xqx:computedAttributeConstructor">
1474    <xsl:text> attribute </xsl:text>1495    <xsl:text> attribute </xsl:text>
1475    <xsl:apply-templates select="xqx:tagName"/>1496    <xsl:apply-templates select="xqx:tagName"/>
1476    <xsl:apply-templates select="xqx:tagNameExpr"/>1497    <xsl:apply-templates select="xqx:tagNameExpr"/>
1477    <xsl:value-of select="$SPACE"/>1498    <xsl:value-of select="$SPACE"/>
1478    <xsl:value-of select="$LBRACE"/>1499    <xsl:value-of select="$LBRACE"/>
1479    <xsl:apply-templates select="xqx:valueExpr"/>     1500    <xsl:apply-templates select="xqx:valueExpr"/>     
1480    <xsl:value-of select="$SPACE"/>1501    <xsl:value-of select="$SPACE"/>
1481    <xsl:value-of select="$RBRACE"/>1502    <xsl:value-of select="$RBRACE"/>
1482  </xsl:template>1503  </xsl:template>
14831504
14841505
1485  <xsl:template match="xqx:computedDocumentConstructor">1506  <xsl:template match="xqx:computedDocumentConstructor">
1486    <xsl:text> document {</xsl:text>1507    <xsl:text> document {</xsl:text>
1487    <xsl:apply-templates select="*"/>1508    <xsl:apply-templates select="*"/>
1488    <xsl:text> }</xsl:text>1509    <xsl:text> }</xsl:text>
1489  </xsl:template>1510  </xsl:template>
14901511
14911512
1492  <xsl:template match="xqx:computedTextConstructor">1513  <xsl:template match="xqx:computedTextConstructor">
1493    <xsl:text> text</xsl:text>1514    <xsl:text> text</xsl:text>
1494    <xsl:value-of select="$SPACE"/>1515    <xsl:value-of select="$SPACE"/>
1495    <xsl:value-of select="$LBRACE"/>1516    <xsl:value-of select="$LBRACE"/>
1496    <xsl:apply-templates select="*"/>1517    <xsl:apply-templates select="*"/>
1497    <xsl:value-of select="$SPACE"/>1518    <xsl:value-of select="$SPACE"/>
1498    <xsl:value-of select="$RBRACE"/>1519    <xsl:value-of select="$RBRACE"/>
1499  </xsl:template>1520  </xsl:template>
15001521
15011522
1502  <xsl:template match="xqx:computedCommentConstructor">1523  <xsl:template match="xqx:computedCommentConstructor">
1503    <xsl:text> comment</xsl:text>1524    <xsl:text> comment</xsl:text>
1504    <xsl:value-of select="$LBRACE"/>1525    <xsl:value-of select="$LBRACE"/>
1505    <xsl:apply-templates select="*"/>1526    <xsl:apply-templates select="*"/>
1506    <xsl:value-of select="$RBRACE"/>1527    <xsl:value-of select="$RBRACE"/>
1507  </xsl:template>1528  </xsl:template>
15081529
15091530
1510  <xsl:template match="xqx:computedNamespaceConstructor">1531  <xsl:template match="xqx:computedNamespaceConstructor">
1511    <xsl:text> namespace </xsl:text>1532    <xsl:text> namespace </xsl:text>
1512    <xsl:choose>1533    <xsl:choose>
1513      <xsl:when test="xqx:prefix">1534      <xsl:when test="xqx:prefix">
1514        <xsl:value-of select="xqx:prefix"/>1535        <xsl:value-of select="xqx:prefix"/>
1515      </xsl:when>1536      </xsl:when>
1516      <xsl:otherwise>1537      <xsl:otherwise>
1517        <xsl:value-of select="$LBRACE"/>1538        <xsl:value-of select="$LBRACE"/>
1518        <xsl:apply-templates select="xqx:prefixExpr"/>1539        <xsl:apply-templates select="xqx:prefixExpr"/>
1519        <xsl:value-of select="$RBRACE"/>1540        <xsl:value-of select="$RBRACE"/>
1520      </xsl:otherwise>1541      </xsl:otherwise>
1521    </xsl:choose>1542    </xsl:choose>
1522    <xsl:value-of select="$SPACE"/>1543    <xsl:value-of select="$SPACE"/>
1523    <xsl:value-of select="$LBRACE"/>1544    <xsl:value-of select="$LBRACE"/>
1524    <xsl:apply-templates select="xqx:URIExpr"/>1545    <xsl:apply-templates select="xqx:URIExpr"/>
1525    <xsl:value-of select="$RBRACE"/>1546    <xsl:value-of select="$RBRACE"/>
1526  </xsl:template>1547  </xsl:template>
15271548
15281549
1529  <xsl:template match="xqx:piTargetExpr">1550  <xsl:template match="xqx:piTargetExpr">
1530    <xsl:value-of select="$LBRACE"/>1551    <xsl:value-of select="$LBRACE"/>
1531    <xsl:apply-templates select="*"/>1552    <xsl:apply-templates select="*"/>
1532    <xsl:value-of select="$RBRACE"/>1553    <xsl:value-of select="$RBRACE"/>
1533  </xsl:template>1554  </xsl:template>
15341555
15351556
1536  <xsl:template match="xqx:piValueExpr">1557  <xsl:template match="xqx:piValueExpr">
1537    <xsl:apply-templates select="*"/>1558    <xsl:apply-templates select="*"/>
1538  </xsl:template>1559  </xsl:template>
15391560
15401561
1541  <xsl:template match="xqx:computedPIConstructor">1562  <xsl:template match="xqx:computedPIConstructor">
1542    <xsl:text> processing-instruction </xsl:text>1563    <xsl:text> processing-instruction </xsl:text>
1543    <xsl:value-of select="xqx:piTarget"/>1564    <xsl:value-of select="xqx:piTarget"/>
1544    <xsl:apply-templates select="xqx:piTargetExpr"/>1565    <xsl:apply-templates select="xqx:piTargetExpr"/>
1545    <xsl:value-of select="$LBRACE"/>1566    <xsl:value-of select="$LBRACE"/>
1546    <xsl:apply-templates select="xqx:piValueExpr"/>1567    <xsl:apply-templates select="xqx:piValueExpr"/>
1547    <xsl:value-of select="$RBRACE"/>1568    <xsl:value-of select="$RBRACE"/>
1548  </xsl:template>1569  </xsl:template>
15491570
15501571
1551  <xsl:template match="xqx:unorderedExpr">1572  <xsl:template match="xqx:unorderedExpr">
1552    <xsl:text> unordered</xsl:text>1573    <xsl:text> unordered</xsl:text>
1553        <xsl:value-of select="$LBRACE"/>1574        <xsl:value-of select="$LBRACE"/>
1554    <xsl:text> </xsl:text>1575    <xsl:text> </xsl:text>
1555    <xsl:apply-templates select="*"/>1576    <xsl:apply-templates select="*"/>
1556    <xsl:text> </xsl:text>1577    <xsl:text> </xsl:text>
1557    <xsl:value-of select="$RBRACE"/>1578    <xsl:value-of select="$RBRACE"/>
1558  </xsl:template>1579  </xsl:template>
15591580
15601581
1561  <xsl:template match="xqx:orderedExpr">1582  <xsl:template match="xqx:orderedExpr">
1562    <xsl:text> ordered</xsl:text>1583    <xsl:text> ordered</xsl:text>
1563        <xsl:value-of select="$LBRACE"/>1584        <xsl:value-of select="$LBRACE"/>
1564    <xsl:text> </xsl:text>1585    <xsl:text> </xsl:text>
1565    <xsl:apply-templates select="*"/>1586    <xsl:apply-templates select="*"/>
1566    <xsl:text> </xsl:text>1587    <xsl:text> </xsl:text>
1567    <xsl:value-of select="$RBRACE"/>1588    <xsl:value-of select="$RBRACE"/>
1568  </xsl:template>1589  </xsl:template>
15691590
15701591
1571  <xsl:template match="xqx:versionDecl">1592  <xsl:template match="xqx:versionDecl">
1572    <xsl:text>xquery </xsl:text>1593    <xsl:text>xquery </xsl:text>
1573    <xsl:if test="xqx:version">1594    <xsl:if test="xqx:version">
1574      <xsl:text>version </xsl:text>1595      <xsl:text>version </xsl:text>
1575      <xsl:call-template name="quote">1596      <xsl:call-template name="quote">
1576        <xsl:with-param name="item" select="xqx:version"/>1597        <xsl:with-param name="item" select="xqx:version"/>
1577      </xsl:call-template>1598      </xsl:call-template>
1578    </xsl:if>1599    </xsl:if>
1579    <xsl:if test="xqx:encoding and xqx:version">1600    <xsl:if test="xqx:encoding and xqx:version">
1580      <xsl:value-of select="$SPACE"/>1601      <xsl:value-of select="$SPACE"/>
1581    </xsl:if>1602    </xsl:if>
1582    <xsl:if test="xqx:encoding">1603    <xsl:if test="xqx:encoding">
1583      <xsl:text>encoding </xsl:text>1604      <xsl:text>encoding </xsl:text>
1584      <xsl:call-template name="quote">1605      <xsl:call-template name="quote">
1585        <xsl:with-param name="item" select="xqx:encoding"/>1606        <xsl:with-param name="item" select="xqx:encoding"/>
1586      </xsl:call-template>1607      </xsl:call-template>
1587    </xsl:if>1608    </xsl:if>
1588    <xsl:value-of select="$SEPARATOR"/>1609    <xsl:value-of select="$SEPARATOR"/>
1589    <xsl:value-of select="$NEWLINE"/>1610    <xsl:value-of select="$NEWLINE"/>
1590  </xsl:template>1611  </xsl:template>
15911612
15921613
1593  <xsl:template match="xqx:namespaceDecl">1614  <xsl:template match="xqx:namespaceDecl">
1594    <xsl:text>declare namespace </xsl:text>1615    <xsl:text>declare namespace </xsl:text>
1595    <xsl:value-of select="xqx:prefix"/>1616    <xsl:value-of select="xqx:prefix"/>
1596    <xsl:value-of select="$EQUAL"/>1617    <xsl:value-of select="$EQUAL"/>
1597    <xsl:call-template name="quote">1618    <xsl:call-template name="quote">
1598      <xsl:with-param name="item" select="xqx:uri"/>1619      <xsl:with-param name="item" select="xqx:uri"/>
1599    </xsl:call-template>1620    </xsl:call-template>
1600  </xsl:template>1621  </xsl:template>
16011622
16021623
1603  <xsl:template match="xqx:defaultNamespaceDecl">1624  <xsl:template match="xqx:defaultNamespaceDecl">
1604    <xsl:text>declare default </xsl:text>1625    <xsl:text>declare default </xsl:text>
1605    <xsl:value-of select="xqx:defaultNamespaceCategory"/>1626    <xsl:value-of select="xqx:defaultNamespaceCategory"/>
1606    <xsl:text> namespace </xsl:text>1627    <xsl:text> namespace </xsl:text>
1607    <xsl:call-template name="quote">1628    <xsl:call-template name="quote">
1608      <xsl:with-param name="item" select="xqx:uri"/>1629      <xsl:with-param name="item" select="xqx:uri"/>
1609    </xsl:call-template>1630    </xsl:call-template>
1610  </xsl:template>1631  </xsl:template>
16111632
16121633
1613  <xsl:template match="xqx:boundarySpaceDecl">1634  <xsl:template match="xqx:boundarySpaceDecl">
1614    <xsl:text>declare boundary-space </xsl:text>1635    <xsl:text>declare boundary-space </xsl:text>
1615    <xsl:value-of select="."/>1636    <xsl:value-of select="."/>
1616  </xsl:template>1637  </xsl:template>
16171638
16181639
1619  <xsl:template match="xqx:defaultCollationDecl">1640  <xsl:template match="xqx:defaultCollationDecl">
1620    <xsl:text>declare default collation </xsl:text>1641    <xsl:text>declare default collation </xsl:text>
1621    <xsl:call-template name="quote">1642    <xsl:call-template name="quote">
1622      <xsl:with-param name="item" select="."/>1643      <xsl:with-param name="item" select="."/>
1623    </xsl:call-template>1644    </xsl:call-template>
1624  </xsl:template>1645  </xsl:template>
16251646
16261647
1627  <xsl:template match="xqx:baseUriDecl">1648  <xsl:template match="xqx:baseUriDecl">
1628    <xsl:text>declare base-uri </xsl:text>1649    <xsl:text>declare base-uri </xsl:text>
1629    <xsl:call-template name="quote">1650    <xsl:call-template name="quote">
1630      <xsl:with-param name="item" select="."/>1651      <xsl:with-param name="item" select="."/>
1631    </xsl:call-template>1652    </xsl:call-template>
1632  </xsl:template>1653  </xsl:template>
16331654
1634  <xsl:template match="xqx:constructionDecl">1655  <xsl:template match="xqx:constructionDecl">
1635    <xsl:text>declare construction </xsl:text>1656    <xsl:text>declare construction </xsl:text>
1636    <xsl:value-of select="."/>1657    <xsl:value-of select="."/>
1637  </xsl:template>1658  </xsl:template>
16381659
16391660
1640  <xsl:template match="xqx:orderingModeDecl">1661  <xsl:template match="xqx:orderingModeDecl">
1641    <xsl:text>declare ordering </xsl:text>1662    <xsl:text>declare ordering </xsl:text>
1642    <xsl:value-of select="."/>1663    <xsl:value-of select="."/>
1643  </xsl:template>1664  </xsl:template>
16441665
16451666
1646  <xsl:template match="xqx:emptyOrderingDecl">1667  <xsl:template match="xqx:emptyOrderingDecl">
1647    <xsl:text>declare default order </xsl:text>1668    <xsl:text>declare default order </xsl:text>
1648    <xsl:value-of select="."/>1669    <xsl:value-of select="."/>
1649  </xsl:template>1670  </xsl:template>
16501671
16511672
1652  <xsl:template match="xqx:copyNamespacesDecl">1673  <xsl:template match="xqx:copyNamespacesDecl">
1653    <xsl:text>declare copy-namespaces </xsl:text>1674    <xsl:text>declare copy-namespaces </xsl:text>
1654    <xsl:value-of select="xqx:preserveMode"/>1675    <xsl:value-of select="xqx:preserveMode"/>
1655    <xsl:value-of select="$COMMA"/>1676    <xsl:value-of select="$COMMA"/>
1656    <xsl:value-of select="xqx:inheritMode"/>1677    <xsl:value-of select="xqx:inheritMode"/>
1657  </xsl:template>1678  </xsl:template>
16581679
16591680
1660  <xsl:template match="xqx:optionDecl">1681  <xsl:template match="xqx:optionDecl">
1661    <xsl:text>declare option </xsl:text>1682    <xsl:text>declare option </xsl:text>
1662    <xsl:apply-templates select="xqx:optionName"/>1683    <xsl:apply-templates select="xqx:optionName"/>
1663    <xsl:value-of select="$SPACE"/>1684    <xsl:value-of select="$SPACE"/>
1664    <xsl:call-template name="quote">1685    <xsl:call-template name="quote">
1665      <xsl:with-param name="item" select="xqx:optionContents"/>1686      <xsl:with-param name="item" select="xqx:optionContents"/>
1666    </xsl:call-template>1687    </xsl:call-template>
1667  </xsl:template>1688  </xsl:template>
16681689
16691690
1670  <xsl:template match="xqx:decimalFormatDecl">1691  <xsl:template match="xqx:decimalFormatDecl">
1671    <xsl:text>declare </xsl:text>1692    <xsl:text>declare </xsl:text>
1672    <xsl:if test="not(xqx:decimalFormatName)">1693    <xsl:if test="not(xqx:decimalFormatName)">
1673      <xsl:text>default </xsl:text>1694      <xsl:text>default </xsl:text>
1674    </xsl:if>1695    </xsl:if>
1675    <xsl:text>decimal-format </xsl:text>1696    <xsl:text>decimal-format </xsl:text>
1676    <xsl:if test="xqx:decimalFormatName">1697    <xsl:if test="xqx:decimalFormatName">
1677      <xsl:apply-templates select="xqx:decimalFormatName"/>1698      <xsl:apply-templates select="xqx:decimalFormatName"/>
1678      <xsl:text> </xsl:text>1699      <xsl:text> </xsl:text>
1679    </xsl:if>1700    </xsl:if>
1680    <xsl:apply-templates select="xqx:decimalFormatParam"/>1701    <xsl:apply-templates select="xqx:decimalFormatParam"/>
1681  </xsl:template>1702  </xsl:template>
16821703
16831704
1684  <xsl:template match="xqx:decimalFormatParam">1705  <xsl:template match="xqx:decimalFormatParam">
1685    <xsl:value-of select="xqx:decimalFormatParamName"/>1706    <xsl:value-of select="xqx:decimalFormatParamName"/>
1686    <xsl:text> = </xsl:text>1707    <xsl:text> = </xsl:text>
1687    <xsl:call-template name="quote">1708    <xsl:call-template name="quote">
1688      <xsl:with-param name="item" select="xqx:decimalFormatParamValue"/>1709      <xsl:with-param name="item" select="xqx:decimalFormatParamValue"/>
1689    </xsl:call-template>1710    </xsl:call-template>
1690    <xsl:text> </xsl:text>1711    <xsl:text> </xsl:text>
1691  </xsl:template>1712  </xsl:template>
16921713
16931714
1694  <xsl:template match="xqx:voidSequenceType">1715  <xsl:template match="xqx:voidSequenceType">
1695    <xsl:text>empty-sequence()</xsl:text>1716    <xsl:text>empty-sequence()</xsl:text>
1696  </xsl:template>1717  </xsl:template>
16971718
16981719
1699  <xsl:template match="xqx:occurrenceIndicator">1720  <xsl:template match="xqx:occurrenceIndicator">
1700    <xsl:value-of select="."/>1721    <xsl:value-of select="."/>
1701  </xsl:template>1722  </xsl:template>
17021723
17031724
1704  <xsl:template match="xqx:anyItemType">1725  <xsl:template match="xqx:anyItemType">
1705    <xsl:text>item()</xsl:text>1726    <xsl:text>item()</xsl:text>
1706  </xsl:template>1727  </xsl:template>
17071728
17081729
1709  <xsl:template match="xqx:sequenceType">1730  <xsl:template match="xqx:sequenceType">
1710    <xsl:apply-templates select="*"/>1731    <xsl:apply-templates select="*"/>
1711  </xsl:template>1732  </xsl:template>
17121733
17131734
1714  <xsl:template match="xqx:sequenceTypeUnion">1735  <xsl:template match="xqx:sequenceTypeUnion">
1715    <xsl:apply-templates select="xqx:sequenceType[1]"/>1736    <xsl:apply-templates select="xqx:sequenceType[1]"/>
1716    <xsl:if test="count(xqx:sequenceType) > 1">1737    <xsl:if test="count(xqx:sequenceType) > 1">
1717      <xsl:for-each select="xqx:sequenceType[position() > 1]">1738      <xsl:for-each select="xqx:sequenceType[position() > 1]">
1718        <xsl:text> | </xsl:text>1739        <xsl:text> | </xsl:text>
1719        <xsl:apply-templates select="."/>1740        <xsl:apply-templates select="."/>
1720      </xsl:for-each>1741      </xsl:for-each>
1721    </xsl:if>1742    </xsl:if>
1722  </xsl:template>1743  </xsl:template>
17231744
17241745
1725  <xsl:template match="xqx:singleType">1746  <xsl:template match="xqx:singleType">
1726    <xsl:apply-templates select="xqx:atomicType"/>1747    <xsl:apply-templates select="xqx:atomicType"/>
1727    <xsl:if test="xqx:optional">1748    <xsl:if test="xqx:optional">
1728      <xsl:text>?</xsl:text>1749      <xsl:text>?</xsl:text>
1729    </xsl:if>1750    </xsl:if>
1730  </xsl:template>1751  </xsl:template>
17311752
17321753
1733  <xsl:template match="xqx:typeDeclaration">1754  <xsl:template match="xqx:typeDeclaration">
1734    <xsl:text> as </xsl:text>1755    <xsl:text> as </xsl:text>
1735    <xsl:apply-templates select="*"/>1756    <xsl:apply-templates select="*"/>
1736  </xsl:template>1757  </xsl:template>
17371758
17381759
1739<!-- contextItemDecl shouldn't have sequenceType, but itemType                         -->1760<!-- contextItemDecl shouldn't have sequenceType, but itemType                         -->
1740  <xsl:template match="xqx:contextItemType">1761  <xsl:template match="xqx:contextItemType">
1741    <xsl:text> as </xsl:text>1762    <xsl:text> as </xsl:text>
1742    <xsl:apply-templates select="*"/>1763    <xsl:apply-templates select="*"/>
1743  </xsl:template>1764  </xsl:template>
17441765
17451766
1746<!-- contextItemDecl shouldn't have sequenceType, but itemType                         -->1767<!-- contextItemDecl shouldn't have sequenceType, but itemType                         -->
1747  <xsl:template match="xqx:contextItemDecl">1768  <xsl:template match="xqx:contextItemDecl">
1748    <xsl:text>declare context item </xsl:text>1769    <xsl:text>declare context item </xsl:text>
1749    <xsl:apply-templates select="xqx:contextItemType"/>1770    <xsl:apply-templates select="xqx:contextItemType"/>
1750    <xsl:if test="xqx:varValue">1771    <xsl:if test="xqx:varValue">
1751      <xsl:value-of select="$SPACE"/>1772      <xsl:value-of select="$SPACE"/>
1752      <xsl:value-of select="$ASSIGN"/>1773      <xsl:value-of select="$ASSIGN"/>
1753      <xsl:value-of select="$SPACE"/>1774      <xsl:value-of select="$SPACE"/>
1754      <xsl:apply-templates select="xqx:varValue"/>1775      <xsl:apply-templates select="xqx:varValue"/>
1755    </xsl:if>1776    </xsl:if>
1756    <xsl:if test="xqx:external">1777    <xsl:if test="xqx:external">
1757      <xsl:text> external </xsl:text>1778      <xsl:text> external </xsl:text>
1758      <xsl:if test="xqx:external/xqx:varValue">1779      <xsl:if test="xqx:external/xqx:varValue">
1759        <xsl:text>:= </xsl:text>1780        <xsl:text>:= </xsl:text>
1760        <xsl:apply-templates select="xqx:external/xqx:varValue"/>1781        <xsl:apply-templates select="xqx:external/xqx:varValue"/>
1761      </xsl:if>1782      </xsl:if>
1762    </xsl:if>1783    </xsl:if>
1763  </xsl:template>1784  </xsl:template>
17641785
17651786
1766  <xsl:template match="xqx:annotation">1787  <xsl:template match="xqx:annotation">
1767    <xsl:value-of select="$SPACE"/>1788    <xsl:value-of select="$SPACE"/>
1768    <xsl:value-of select="$PERCENT"/>1789    <xsl:value-of select="$PERCENT"/>
1769    <xsl:apply-templates select="xqx:annotationName"/>1790    <xsl:apply-templates select="xqx:annotationName"/>
1770    <xsl:if test="xqx:arguments">1791    <xsl:if test="xqx:arguments">
1771      <xsl:for-each select="xqx:arguments">1792      <xsl:for-each select="xqx:arguments">
1772         <xsl:call-template name="parenthesizedList"/>1793         <xsl:call-template name="parenthesizedList"/>
1773      </xsl:for-each>1794      </xsl:for-each>
1774    </xsl:if>1795    </xsl:if>
1775  </xsl:template>1796  </xsl:template>
17761797
17771798
1778  <xsl:template match="xqx:varDecl">1799  <xsl:template match="xqx:varDecl">
1779    <xsl:text>declare</xsl:text>1800    <xsl:text>declare</xsl:text>
1780    <xsl:apply-templates select="xqx:annotation"/>1801    <xsl:apply-templates select="xqx:annotation"/>
1781    <xsl:text> variable </xsl:text>1802    <xsl:text> variable </xsl:text>
1782    <xsl:value-of select="$DOLLAR"/>1803    <xsl:value-of select="$DOLLAR"/>
1783    <xsl:apply-templates select="xqx:varName"/>1804    <xsl:apply-templates select="xqx:varName"/>
1784    <xsl:apply-templates select="xqx:typeDeclaration"/>1805    <xsl:apply-templates select="xqx:typeDeclaration"/>
1785    <xsl:if test="xqx:varValue">1806    <xsl:if test="xqx:varValue">
1786      <xsl:value-of select="$ASSIGN"/>1807      <xsl:value-of select="$ASSIGN"/>
1787      <xsl:apply-templates select="xqx:varValue"/>1808      <xsl:apply-templates select="xqx:varValue"/>
1788    </xsl:if>1809    </xsl:if>
1789    <xsl:if test="xqx:external">1810    <xsl:if test="xqx:external">
1790      <xsl:text> external </xsl:text>1811      <xsl:text> external </xsl:text>
1791      <xsl:if test="xqx:external/xqx:varValue">1812      <xsl:if test="xqx:external/xqx:varValue">
1792        <xsl:text>:= </xsl:text>1813        <xsl:text>:= </xsl:text>
1793        <xsl:apply-templates select="xqx:external/xqx:varValue"/>1814        <xsl:apply-templates select="xqx:external/xqx:varValue"/>
1794      </xsl:if>1815      </xsl:if>
1795    </xsl:if>1816    </xsl:if>
1796  </xsl:template>1817  </xsl:template>
17971818
17981819
1799  <xsl:template match="xqx:targetLocation">1820  <xsl:template match="xqx:targetLocation">
1800    <xsl:choose>1821    <xsl:choose>
1801      <xsl:when test="position()=1"> at </xsl:when>1822      <xsl:when test="position()=1"> at </xsl:when>
1802      <xsl:otherwise>,&#xD;  </xsl:otherwise>1823      <xsl:otherwise>,&#xD;  </xsl:otherwise>
1803    </xsl:choose>1824    </xsl:choose>
1804    <xsl:call-template name="quote">1825    <xsl:call-template name="quote">
1805      <xsl:with-param name="item" select="."/>1826      <xsl:with-param name="item" select="."/>
1806    </xsl:call-template>1827    </xsl:call-template>
1807  </xsl:template>1828  </xsl:template>
18081829
18091830
1810  <xsl:template match="xqx:schemaImport">1831  <xsl:template match="xqx:schemaImport">
1811    <xsl:text> import schema </xsl:text>1832    <xsl:text> import schema </xsl:text>
1812    <xsl:if test="xqx:defaultElementNamespace">1833    <xsl:if test="xqx:defaultElementNamespace">
1813      <xsl:text> default element namespace </xsl:text>1834      <xsl:text> default element namespace </xsl:text>
1814    </xsl:if>1835    </xsl:if>
1815    <xsl:if test="xqx:namespacePrefix">1836    <xsl:if test="xqx:namespacePrefix">
1816      <xsl:text> namespace </xsl:text>1837      <xsl:text> namespace </xsl:text>
1817      <xsl:value-of select="xqx:namespacePrefix"/>1838      <xsl:value-of select="xqx:namespacePrefix"/>
1818      <xsl:value-of select="$EQUAL"/>1839      <xsl:value-of select="$EQUAL"/>
1819    </xsl:if>1840    </xsl:if>
1820    <xsl:call-template name="quote">1841    <xsl:call-template name="quote">
1821      <xsl:with-param name="item" select="xqx:targetNamespace"/>1842      <xsl:with-param name="item" select="xqx:targetNamespace"/>
1822    </xsl:call-template>1843    </xsl:call-template>
1823    <xsl:apply-templates select="xqx:targetLocation"/>1844    <xsl:apply-templates select="xqx:targetLocation"/>
1824  </xsl:template>1845  </xsl:template>
18251846
18261847
1827  <xsl:template match="xqx:moduleImport">1848  <xsl:template match="xqx:moduleImport">
1828    <xsl:text> import module </xsl:text>1849    <xsl:text> import module </xsl:text>
1829    <xsl:if test="xqx:namespacePrefix">1850    <xsl:if test="xqx:namespacePrefix">
1830      <xsl:text> namespace </xsl:text>1851      <xsl:text> namespace </xsl:text>
1831      <xsl:value-of select="xqx:namespacePrefix"/>1852      <xsl:value-of select="xqx:namespacePrefix"/>
1832      <xsl:value-of select="$EQUAL"/>1853      <xsl:value-of select="$EQUAL"/>
1833    </xsl:if>1854    </xsl:if>
1834    <xsl:call-template name="quote">1855    <xsl:call-template name="quote">
1835      <xsl:with-param name="item" select="xqx:targetNamespace"/>1856      <xsl:with-param name="item" select="xqx:targetNamespace"/>
1836    </xsl:call-template>1857    </xsl:call-template>
1837    <xsl:apply-templates select="xqx:targetLocation"/>1858    <xsl:apply-templates select="xqx:targetLocation"/>
1838  </xsl:template>1859  </xsl:template>
18391860
18401861
1841  <xsl:template match="xqx:param">1862  <xsl:template match="xqx:param">
1842    <xsl:value-of select="$DOLLAR"/>1863    <xsl:value-of select="$DOLLAR"/>
1843    <xsl:apply-templates select="xqx:varName"/>1864    <xsl:apply-templates select="xqx:varName"/>
1844    <xsl:apply-templates select="xqx:typeDeclaration"/>1865    <xsl:apply-templates select="xqx:typeDeclaration"/>
1845  </xsl:template>1866  </xsl:template>
18461867
18471868
1848  <xsl:template match="xqx:paramList">1869  <xsl:template match="xqx:paramList">
1849    <xsl:call-template name="parenthesizedList"/>1870    <xsl:call-template name="parenthesizedList"/>
1850  </xsl:template>1871  </xsl:template>
18511872
18521873
1853  <xsl:template match="xqx:functionBody">1874  <xsl:template match="xqx:functionBody">
1854    <xsl:value-of select="$NEWLINE"/>1875    <xsl:value-of select="$NEWLINE"/>
1855    <xsl:value-of select="$LBRACE"/>1876    <xsl:value-of select="$LBRACE"/>
1856    <xsl:value-of select="$NEWLINE"/>1877    <xsl:value-of select="$NEWLINE"/>
1857    <xsl:apply-templates/>1878    <xsl:apply-templates/>
1858    <xsl:value-of select="$NEWLINE"/>1879    <xsl:value-of select="$NEWLINE"/>
1859    <xsl:value-of select="$RBRACE"/>1880    <xsl:value-of select="$RBRACE"/>
1860  </xsl:template>1881  </xsl:template>
18611882
18621883
1863  <xsl:template match="xqx:functionDecl">1884  <xsl:template match="xqx:functionDecl">
1864    <xsl:text>declare</xsl:text>1885    <xsl:text>declare</xsl:text>
1865    <xsl:apply-templates select="xqx:annotation"/>1886    <xsl:apply-templates select="xqx:annotation"/>
1866    <xsl:text> function </xsl:text>1887    <xsl:text> function </xsl:text>
1867    <xsl:apply-templates select="xqx:functionName"/>1888    <xsl:apply-templates select="xqx:functionName"/>
1868    <xsl:apply-templates select="xqx:paramList"/>1889    <xsl:apply-templates select="xqx:paramList"/>
1869    <xsl:apply-templates select="xqx:typeDeclaration"/>1890    <xsl:apply-templates select="xqx:typeDeclaration"/>
1870    <xsl:choose>1891    <xsl:choose>
1871      <xsl:when test="xqx:externalDefinition">1892      <xsl:when test="xqx:externalDefinition">
1872        <xsl:text> external </xsl:text>1893        <xsl:text> external </xsl:text>
1873      </xsl:when>1894      </xsl:when>
1874      <xsl:otherwise>1895      <xsl:otherwise>
1875        <xsl:apply-templates select="xqx:functionBody"/>1896        <xsl:apply-templates select="xqx:functionBody"/>
1876      </xsl:otherwise>1897      </xsl:otherwise>
1877    </xsl:choose>1898    </xsl:choose>
1878  </xsl:template>1899  </xsl:template>
18791900
18801901
1881  <xsl:template match="xqx:queryBody">1902  <xsl:template match="xqx:queryBody">
1882    <xsl:apply-templates select="*"/>1903    <xsl:apply-templates select="*"/>
1883    <xsl:value-of select="$NEWLINE"/>1904    <xsl:value-of select="$NEWLINE"/>
1884  </xsl:template>1905  </xsl:template>
18851906
1886  <xsl:template match="xqx:moduleDecl">1907  <xsl:template match="xqx:moduleDecl">
1887    <xsl:text> module namespace </xsl:text>1908    <xsl:text> module namespace </xsl:text>
1888    <xsl:value-of select="xqx:prefix"/>1909    <xsl:value-of select="xqx:prefix"/>
1889    <xsl:value-of select="$EQUAL"/>1910    <xsl:value-of select="$EQUAL"/>
1890    <xsl:call-template name="quote">1911    <xsl:call-template name="quote">
1891      <xsl:with-param name="item" select="xqx:uri" />1912      <xsl:with-param name="item" select="xqx:uri" />
1892    </xsl:call-template>1913    </xsl:call-template>
1893    <xsl:value-of select="$SEPARATOR"/>1914    <xsl:value-of select="$SEPARATOR"/>
1894    <xsl:value-of select="$NEWLINE"/>1915    <xsl:value-of select="$NEWLINE"/>
1895  </xsl:template>1916  </xsl:template>
18961917
18971918
1898  <xsl:template match="xqx:prolog">1919  <xsl:template match="xqx:prolog">
1899    <xsl:for-each select="*">1920    <xsl:for-each select="*">
1900      <xsl:apply-templates select="."/>1921      <xsl:apply-templates select="."/>
1901      <xsl:value-of select="$SEPARATOR"/>1922      <xsl:value-of select="$SEPARATOR"/>
1902      <xsl:value-of select="$NEWLINE"/>1923      <xsl:value-of select="$NEWLINE"/>
1903    </xsl:for-each>1924    </xsl:for-each>
1904  </xsl:template>1925  </xsl:template>
19051926
19061927
1907  <xsl:template match="xqx:libraryModule">1928  <xsl:template match="xqx:libraryModule">
1908    <xsl:apply-templates select="xqx:moduleDecl"/>1929    <xsl:apply-templates select="xqx:moduleDecl"/>
1909    <xsl:apply-templates select="xqx:prolog"/>1930    <xsl:apply-templates select="xqx:prolog"/>
1910  </xsl:template>1931  </xsl:template>
19111932
19121933
1913  <xsl:template match="xqx:mainModule">1934  <xsl:template match="xqx:mainModule">
1914    <xsl:apply-templates select="xqx:prolog"/>1935    <xsl:apply-templates select="xqx:prolog"/>
1915    <xsl:apply-templates select="xqx:queryBody"/>1936    <xsl:apply-templates select="xqx:queryBody"/>
1916  </xsl:template>1937  </xsl:template>
19171938
19181939
1919<!-- Enhanced to properly support encoding parameter -->1940<!-- Enhanced to properly support encoding parameter -->
1920  <xsl:template match="xqx:module" priority="2">1941  <xsl:template match="xqx:module" priority="2">
1921    <xsl:choose>1942    <xsl:choose>
1922      <xsl:when test="xqx:versionDecl/xqx:encoding">1943      <xsl:when test="xqx:versionDecl/xqx:encoding">
1923        <xsl:variable name="enc">1944        <xsl:variable name="enc">
1924          <xsl:value-of select='xqx:versionDecl/xqx:encoding'/>1945          <xsl:value-of select='xqx:versionDecl/xqx:encoding'/>
1925        </xsl:variable>1946        </xsl:variable>
1926        <xsl:result-document encoding="{$enc}">1947        <xsl:result-document encoding="{$enc}">
1927          <xsl:apply-templates select="*"/>1948          <xsl:apply-templates select="*"/>
1928          <xsl:fallback>1949          <xsl:fallback>
1929            <xsl:apply-templates select="*"/>1950            <xsl:apply-templates select="*"/>
1930          </xsl:fallback>1951          </xsl:fallback>
1931        </xsl:result-document>1952        </xsl:result-document>
1932      </xsl:when>1953      </xsl:when>
1933      <xsl:otherwise>1954      <xsl:otherwise>
1934        <xsl:apply-templates select="*"/>1955        <xsl:apply-templates select="*"/>
1935      </xsl:otherwise>1956      </xsl:otherwise>
1936    </xsl:choose>1957    </xsl:choose>
1937  </xsl:template>1958  </xsl:template>
19381959
19391960
1940  <xsl:template match="/xqx:*">1961  <xsl:template match="/xqx:*">
1941   <xsl:message terminate="yes">Incorrect XQueryX: The only top-level element permitted is xqx:module</xsl:message>1962   <xsl:message terminate="yes">Incorrect XQueryX: The only top-level element permitted is xqx:module</xsl:message>
1942  </xsl:template>1963  </xsl:template>
19431964
19441965
1945</xsl:stylesheet>1966</xsl:stylesheet>
1946]]>1967]]>
1968