blob: e8315e6a03ddebbd952becec78116810708afbf6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
<?xml version="1.0"?>
<!--
Tests dynamic function reference
Copyright (C) 2015 LoVullo Associates, Inc.
This file is part of TAME.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<stylesheet version="2.0"
xmlns="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:eseq="http://www.lovullo.com/tame/preproc/expand/eseq"
xmlns:foo="http://www.lovullo.com/_junk">
<import href="../../../src/preproc/expand/expand-sequence.xsl" />
<variable name="foo:empty-eseq" as="element( foo:empty )">
<foo:empty />
</variable>
<variable name="foo:a" as="element( foo:seq )">
<foo:seq foo="bar">
<foo:node head="true">
<foo:head />
</foo:node>
<foo:node tail="true" />
</foo:seq>
</variable>
<variable name="foo:expanded" as="element( foo:seq )">
<foo:seq foo="baz">
<sequence select="eseq:expand-node( $foo:a/foo:node[1] ),
eseq:expand-node( $foo:a/foo:node[2] )" />
</foo:seq>
</variable>
<!-- used to assert indirectly that our own @code{is-expanded}
predicate is being used -->
<variable name="foo:unexpandable" as="element( foo:seq )">
<foo:seq>
<foo:node no-expand="true" />
</foo:seq>
</variable>
<function name="eseq:is-expandable" as="xs:boolean"
override="yes">
<param name="node" as="node()" />
<sequence select="$node instance of element()
and not( $node/@foo:expanded )" />
</function>
<function name="eseq:expand-node" as="node()*"
override="yes">
<param name="node" as="node()" />
<choose>
<when test="$node/@no-expand">
<sequence select="$node" />
</when>
<otherwise>
<apply-templates mode="foo:expand-node"
select="$node" />
</otherwise>
</choose>
</function>
<template mode="foo:expand-node"
match="element()">
<copy>
<attribute name="foo:expanded"
select="'true'" />
<sequence select="@*|node()" />
</copy>
</template>
</stylesheet>
|