diff options
Diffstat (limited to 'test/preproc/expand/expand-sequence-test.xsl')
-rw-r--r-- | test/preproc/expand/expand-sequence-test.xsl | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/test/preproc/expand/expand-sequence-test.xsl b/test/preproc/expand/expand-sequence-test.xsl new file mode 100644 index 0000000..e8315e6 --- /dev/null +++ b/test/preproc/expand/expand-sequence-test.xsl @@ -0,0 +1,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> |