xref: /aosp_15_r20/external/apache-xml/test/tests/extensions/library/libraryNodeset03.xsl (revision 1212f9a0ffdc28482b8821715d2222bf16dc14e2)
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