xref: /aosp_15_r20/external/apache-xml/test/tests/extensions/javascript/javascriptSample5.xsl (revision 1212f9a0ffdc28482b8821715d2222bf16dc14e2)
1*1212f9a0SAndroid Build Coastguard Worker<?xml version="1.0"?>
2*1212f9a0SAndroid Build Coastguard Worker<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3*1212f9a0SAndroid Build Coastguard Worker                xmlns:lxslt="http://xml.apache.org/xslt"
4*1212f9a0SAndroid Build Coastguard Worker                xmlns:counter="MyCounter"
5*1212f9a0SAndroid Build Coastguard Worker                extension-element-prefixes="counter"
6*1212f9a0SAndroid Build Coastguard Worker                version="1.0">
7*1212f9a0SAndroid Build Coastguard Worker
8*1212f9a0SAndroid Build Coastguard Worker<!-- Copied from: java/samples/extensions/5-numlistJscript.xsl -->
9*1212f9a0SAndroid Build Coastguard Worker
10*1212f9a0SAndroid Build Coastguard Worker  <lxslt:component prefix="counter"
11*1212f9a0SAndroid Build Coastguard Worker                   elements="init incr" functions="read">
12*1212f9a0SAndroid Build Coastguard Worker    <lxslt:script lang="javascript">
13*1212f9a0SAndroid Build Coastguard Worker      var counters = new Array();
14*1212f9a0SAndroid Build Coastguard Worker
15*1212f9a0SAndroid Build Coastguard Worker      function init (xslproc, elem) {
16*1212f9a0SAndroid Build Coastguard Worker        name = elem.getAttribute ("name");
17*1212f9a0SAndroid Build Coastguard Worker        value = parseInt(elem.getAttribute ("value"));
18*1212f9a0SAndroid Build Coastguard Worker        counters[name] = value;
19*1212f9a0SAndroid Build Coastguard Worker        return null;
20*1212f9a0SAndroid Build Coastguard Worker      }
21*1212f9a0SAndroid Build Coastguard Worker
22*1212f9a0SAndroid Build Coastguard Worker      function read (name) {
23*1212f9a0SAndroid Build Coastguard Worker        return "" + (counters[name]);
24*1212f9a0SAndroid Build Coastguard Worker      }
25*1212f9a0SAndroid Build Coastguard Worker
26*1212f9a0SAndroid Build Coastguard Worker      function incr (xslproc, elem)
27*1212f9a0SAndroid Build Coastguard Worker      {
28*1212f9a0SAndroid Build Coastguard Worker        name = elem.getAttribute ("name");
29*1212f9a0SAndroid Build Coastguard Worker        counters[name]++;
30*1212f9a0SAndroid Build Coastguard Worker        return null;
31*1212f9a0SAndroid Build Coastguard Worker      }
32*1212f9a0SAndroid Build Coastguard Worker    </lxslt:script>
33*1212f9a0SAndroid Build Coastguard Worker  </lxslt:component>
34*1212f9a0SAndroid Build Coastguard Worker
35*1212f9a0SAndroid Build Coastguard Worker  <xsl:template match="/">
36*1212f9a0SAndroid Build Coastguard Worker    <HTML>
37*1212f9a0SAndroid Build Coastguard Worker      <H1>JavaScript Example.</H1>
38*1212f9a0SAndroid Build Coastguard Worker      <counter:init name="index" value="1"/>
39*1212f9a0SAndroid Build Coastguard Worker      <p>Here are the names in alphabetical order by last name:</p>
40*1212f9a0SAndroid Build Coastguard Worker      <xsl:for-each select="doc/name">
41*1212f9a0SAndroid Build Coastguard Worker        <xsl:sort select="@last"/>
42*1212f9a0SAndroid Build Coastguard Worker        <xsl:sort select="@first"/>
43*1212f9a0SAndroid Build Coastguard Worker        <p>
44*1212f9a0SAndroid Build Coastguard Worker        <xsl:text>[</xsl:text>
45*1212f9a0SAndroid Build Coastguard Worker        <xsl:value-of select="counter:read('index')"/>
46*1212f9a0SAndroid Build Coastguard Worker        <xsl:text>]. </xsl:text>
47*1212f9a0SAndroid Build Coastguard Worker        <xsl:value-of select="@last"/>
48*1212f9a0SAndroid Build Coastguard Worker        <xsl:text>, </xsl:text>
49*1212f9a0SAndroid Build Coastguard Worker        <xsl:value-of select="@first"/>
50*1212f9a0SAndroid Build Coastguard Worker        </p>
51*1212f9a0SAndroid Build Coastguard Worker        <counter:incr name="index"/>
52*1212f9a0SAndroid Build Coastguard Worker      </xsl:for-each>
53*1212f9a0SAndroid Build Coastguard Worker    </HTML>
54*1212f9a0SAndroid Build Coastguard Worker  </xsl:template>
55*1212f9a0SAndroid Build Coastguard Worker
56*1212f9a0SAndroid Build Coastguard Worker
57*1212f9a0SAndroid Build Coastguard Worker  <!--
58*1212f9a0SAndroid Build Coastguard Worker   * Licensed to the Apache Software Foundation (ASF) under one
59*1212f9a0SAndroid Build Coastguard Worker   * or more contributor license agreements. See the NOTICE file
60*1212f9a0SAndroid Build Coastguard Worker   * distributed with this work for additional information
61*1212f9a0SAndroid Build Coastguard Worker   * regarding copyright ownership. The ASF licenses this file
62*1212f9a0SAndroid Build Coastguard Worker   * to you under the Apache License, Version 2.0 (the  "License");
63*1212f9a0SAndroid Build Coastguard Worker   * you may not use this file except in compliance with the License.
64*1212f9a0SAndroid Build Coastguard Worker   * You may obtain a copy of the License at
65*1212f9a0SAndroid Build Coastguard Worker   *
66*1212f9a0SAndroid Build Coastguard Worker   *     http://www.apache.org/licenses/LICENSE-2.0
67*1212f9a0SAndroid Build Coastguard Worker   *
68*1212f9a0SAndroid Build Coastguard Worker   * Unless required by applicable law or agreed to in writing, software
69*1212f9a0SAndroid Build Coastguard Worker   * distributed under the License is distributed on an "AS IS" BASIS,
70*1212f9a0SAndroid Build Coastguard Worker   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
71*1212f9a0SAndroid Build Coastguard Worker   * See the License for the specific language governing permissions and
72*1212f9a0SAndroid Build Coastguard Worker   * limitations under the License.
73*1212f9a0SAndroid Build Coastguard Worker  -->
74*1212f9a0SAndroid Build Coastguard Worker
75*1212f9a0SAndroid Build Coastguard Worker</xsl:stylesheet>
76