1<?xml version="1.0"?> 2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" 3 xmlns:cextend="http://xml.apache.org/xalan" 4 xmlns:default="http://www.hello.com" 5 xmlns:test="http://www.extension03.test" 6 xmlns:BTM="www.btm.com" 7 exclude-result-prefixes="cextend default test BTM"> 8 9 <!-- FileName: libraryNodeset03 --> 10 <!-- Document: http://www.w3.org/TR/xslt --> 11 <!-- DocVersion: 19991116 --> 12 <!-- Section: 14 Extensions --> 13 <!-- Purpose: Testing Lotus-specific extension "Nodeset". More extensive RTF testing --> 14 15<xsl:strip-space elements="*"/> 16<xsl:output indent="yes"/> 17<xsl:variable name="rtf"> 18 <docelem> 19 <elem1> 20 <elem2> 21 <elem3 attr1="A" attr2="B" attr3="C">Elem3.1</elem3> 22 <test:elem3 attr1="Z" attr2="Y" attr3="X">NS-Elem3.2</test:elem3> 23 <elem3 attr1="D" attr2="E" attr3="F">Elem3.3</elem3> 24 <test:elem3 attr1="W" attr2="V" attr3="U">NS-Elem3.4</test:elem3> 25 </elem2> 26 </elem1> 27 <elem1> 28 <elem2>1</elem2> 29 <elem2>2</elem2> 30 <elem2>3</elem2> 31 <elem2>4</elem2> 32 <BTM:BreakingTheMold/> 33 </elem1> 34 <elem1> 35 <elem2> 36 <elem4 attr1="G" attr2="H" attr3="I">Elem4.1</elem4> 37 <test:elem4 attr1="T" attr2="S" attr3="R">NS-Elem4.2</test:elem4> 38 <elem4 attr1="J" attr2="K" attr3="L">Elem4.3</elem4> 39 <test:elem4 attr1="Q" attr2="P" attr3="O">NS-Elem4.4</test:elem4> 40 </elem2> 41 </elem1> 42 </docelem> 43 <docelem/> 44 <docelem xmlns="http://www.hello.com"> 45 <elem3>1</elem3> 46 <elem3>2</elem3> 47 <test:elem3><elem3a/></test:elem3> 48 <elem3>4</elem3> 49 </docelem> 50 </xsl:variable> 51 52<xsl:template match="/"> 53 <out> 54 55 <xsl:element name="CountDOCELEM"> 56 <xsl:value-of select="count(cextend:nodeset($rtf)/docelem)"/> 57 </xsl:element> 58 59 <xsl:element name="CountELEM2andELEM3"> 60 <xsl:value-of select="count(cextend:nodeset($rtf)/docelem//elem2 | 61 cextend:nodeset($rtf)/docelem//elem3 | 62 cextend:nodeset($rtf)/docelem//test:elem3)"/> 63 </xsl:element> 64 <xsl:element name="SumELEM2"> 65 <xsl:value-of select="sum(cextend:nodeset($rtf)/docelem/elem1[2]/elem2)"/> 66 </xsl:element> 67 68 <xsl:element name="NumberELEM2"> 69 <xsl:value-of select="number(cextend:nodeset($rtf)/docelem/elem1[2])"/> 70 </xsl:element> 71 72 <xsl:element name="NameBTM"> 73 <xsl:value-of select="name(cextend:nodeset($rtf)/docelem/elem1[2]/*[5])"/> 74 </xsl:element> 75 76 <xsl:element name="LocalNameBTM"> 77 <xsl:value-of select="local-name(cextend:nodeset($rtf)/docelem/elem1[2]/*[5])"/> 78 </xsl:element> 79 80 <xsl:element name="Namespace-URIs"> 81 <xsl:attribute name="uri1"> 82 <xsl:value-of select="namespace-uri(cextend:nodeset($rtf)/docelem/elem1/elem2/test:elem3)"/> 83 </xsl:attribute> 84 <xsl:attribute name="uri2"> 85 <xsl:value-of select="namespace-uri(cextend:nodeset($rtf)/docelem/elem1[2]/*[5])"/> 86 </xsl:attribute> 87 </xsl:element> 88 89 <xsl:element name="ValueDOCELEM-STAR"> 90 <xsl:value-of select="cextend:nodeset($rtf)/docelem/*"/> 91 </xsl:element> 92 93 <xsl:element name="ValueELEM4"> 94 <xsl:value-of select="cextend:nodeset($rtf)/docelem/elem1/elem2/test:elem4[@attr3='O']"/> 95 </xsl:element> 96 97 <xsl:element name="ValueTESTELEM4-1"> 98 <xsl:value-of select="cextend:nodeset($rtf)/docelem/elem1/elem2/test:elem4[1]"/> 99 </xsl:element> 100 101 <xsl:element name="SlashSlashELEM4"> 102 <xsl:value-of select="cextend:nodeset($rtf)//elem4"/> 103 </xsl:element> 104 105 <xsl:element name="SlashSlashELEM4-2Attrs-2"> 106 <xsl:value-of select="cextend:nodeset($rtf)//test:elem4[2]/@*[2]"/> 107 </xsl:element> 108 109 <Axis_Tests> 110 <xsl:element name="Ancestor"> 111 <xsl:for-each select="cextend:nodeset($rtf)/docelem/elem1[2]/*[5]/ancestor::*"> 112 <xsl:copy/> 113 </xsl:for-each> 114 </xsl:element> 115 116 <xsl:element name="Ancestor-or-Self"> 117 <xsl:for-each select="cextend:nodeset($rtf)//BTM:BreakingTheMold/ancestor-or-self::*"> 118 <xsl:copy/> 119 </xsl:for-each> 120 </xsl:element> 121 122 <xsl:element name="Attribute"> 123 <xsl:for-each select="cextend:nodeset($rtf)//test:elem4/attribute::*"> 124 <xsl:copy/> 125 </xsl:for-each> 126 </xsl:element> 127 128 <xsl:element name="Child"> 129 <xsl:for-each select="cextend:nodeset($rtf)/docelem/*"> 130 <xsl:copy/> 131 </xsl:for-each> 132 </xsl:element> 133 134 <xsl:element name="Descendant"> 135 <xsl:for-each select="cextend:nodeset($rtf)/docelem/elem1[2]/descendant::*"> 136 <xsl:copy/> 137 </xsl:for-each> 138 </xsl:element> 139 140 <xsl:element name="Descendant-or-Self"> 141 <xsl:for-each select="cextend:nodeset($rtf)/docelem/elem1[2]/descendant-or-self::*"> 142 <xsl:copy/> 143 </xsl:for-each> 144 </xsl:element> 145 146 <xsl:element name="Following"> 147 <xsl:for-each select="cextend:nodeset($rtf)/docelem[2]/elem1[2]/following::*"> 148 <xsl:copy/> 149 </xsl:for-each> 150 </xsl:element> 151 152 <xsl:element name="Following-Sibling"> 153 <xsl:for-each select="cextend:nodeset($rtf)/docelem[2]/elem1[1]/following-sibling::*"> 154 <xsl:copy/> 155 </xsl:for-each> 156 </xsl:element> 157 158 <xsl:element name="Namespace"> 159 <xsl:for-each select="cextend:nodeset($rtf)/docelem/elem1/elem2/*/namespace::* | 160 cextend:nodeset($rtf)/docelem/elem1/*/namespace::*"> 161 <xsl:copy/> 162 </xsl:for-each> 163 </xsl:element> 164 165 <xsl:element name="Parent0"> 166 <xsl:value-of select="name(cextend:nodeset($rtf)/docelem[2]/parent::*)"/> 167 </xsl:element> 168 169 <xsl:element name="Parent1"> 170 <xsl:value-of select="name(cextend:nodeset($rtf)/docelem/elem1[3]/elem2/test:elem4[2]/parent::*)"/> 171 </xsl:element> 172 173 <xsl:element name="Preceding"> 174 <xsl:value-of select="name(cextend:nodeset($rtf)//test:elem4[2]/preceding::elem1[2]/*/test:elem3[2])"/> 175 </xsl:element> 176 177 <xsl:element name="Preceding-Sibling"> 178 <xsl:value-of select="cextend:nodeset($rtf)//BTM:BreakingTheMold/preceding-sibling::*[4]"/> 179 </xsl:element> 180 181 <xsl:element name="Self"> 182 <xsl:value-of select="name(cextend:nodeset($rtf)//BTM:BreakingTheMold/self::*)"/> 183 </xsl:element> 184 185 </Axis_Tests> 186 187 <xsl:element name="AT-Elem3-Elem4"> 188 <xsl:apply-templates select="cextend:nodeset($rtf)/docelem/elem1/elem2/Elem4 | 189 cextend:nodeset($rtf)/docelem/elem1/elem2/Elem3"/> 190 </xsl:element> 191 192 <xsl:element name="AT-NSElem3-NSElem4"> 193 <xsl:apply-templates select="cextend:nodeset($rtf)/docelem/elem1/elem2/test:Elem4 | 194 cextend:nodeset($rtf)/docelem/elem1/elem2/test:Elem3"/> 195 </xsl:element> 196 197 <xsl:element name="AT-Elem3-NSElem4"> 198 <xsl:apply-templates select="cextend:nodeset($rtf)/docelem/elem1/elem2/Elem3 | 199 cextend:nodeset($rtf)/docelem/elem1/elem2/test:Elem4"/> 200 </xsl:element> 201 202 <xsl:element name="FE-FE-AT-Mode"> 203 <xsl:for-each select="cextend:nodeset($rtf)/docelem[2]/elem1"> 204 <xsl:for-each select="elem2/*"> 205 <xsl:apply-templates select="current()" mode="fe"/><xsl:text> </xsl:text> 206 </xsl:for-each> 207 </xsl:for-each> 208 </xsl:element> 209 210 <xsl:element name="CopyElem1-1"> 211 <xsl:copy-of select="cextend:nodeset($rtf)/docelem/elem1[elem2[Elem3[@attr3='C']]]"/> 212 </xsl:element> 213 214 <xsl:element name="CopyElem3-2"> 215 <xsl:copy-of select="cextend:nodeset($rtf)/docelem/elem1/elem2/Elem3[2]"/> 216 </xsl:element> 217 218 <xsl:element name="Copy-of-RTF"> 219 <xsl:copy-of select="cextend:nodeset($rtf)/default:docelem"/> 220 </xsl:element> 221 222 <xsl:element name="Copy-of-TEST-ELEM3"> 223 <xsl:copy-of select="cextend:nodeset($rtf)/default:docelem/test:elem3"/> 224 </xsl:element> 225 226 </out> 227</xsl:template> 228 229<xsl:template match="test:Elem3 | test:Elem4"> 230 <xsl:value-of select="."/><xsl:text> modeless </xsl:text> 231</xsl:template> 232 233<xsl:template match="Elem3 | Elem4"> 234 <xsl:value-of select="."/><xsl:text> modeless </xsl:text> 235</xsl:template> 236 237<xsl:template match="test:Elem3 | test:Elem4" mode="fe"> 238 <xsl:value-of select="."/><xsl:text> fe </xsl:text> 239</xsl:template> 240 241<xsl:template match="Elem3 | Elem4" mode="fe"> 242 <xsl:value-of select="."/><xsl:text> fe </xsl:text> 243</xsl:template> 244 245 246 <!-- 247 * Licensed to the Apache Software Foundation (ASF) under one 248 * or more contributor license agreements. See the NOTICE file 249 * distributed with this work for additional information 250 * regarding copyright ownership. The ASF licenses this file 251 * to you under the Apache License, Version 2.0 (the "License"); 252 * you may not use this file except in compliance with the License. 253 * You may obtain a copy of the License at 254 * 255 * http://www.apache.org/licenses/LICENSE-2.0 256 * 257 * Unless required by applicable law or agreed to in writing, software 258 * distributed under the License is distributed on an "AS IS" BASIS, 259 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 260 * See the License for the specific language governing permissions and 261 * limitations under the License. 262 --> 263 264</xsl:stylesheet> 265