vb@4: // YSLT version 2.5.5 vb@0: vb@0: !! vb@0: def indent(level): vb@0: return "value 'substring($space, 1, $_indent+" + str(level) + "*$autoindent)';" vb@0: !! vb@0: vb@0: in exsl decl document(href, method) alias document; vb@0: in func decl def(name) alias function, result(select); vb@0: vb@0: decl debug_off(exclude-result-prefixes="yml"); vb@0: vb@0: in xsl { vb@0: decl _trace_param(%text, name="yml:trace", select='yml:debug("* %text")') alias param; vb@0: decl _trace_with is _trace_param alias with-param; vb@0: vb@0: decl param(name, select); vb@0: decl const(name, select) alias variable, variable is const; vb@0: decl output(method), key(name, match, use); vb@0: decl value(select) alias value-of, copy(select) alias copy-of; vb@0: vb@0: decl indent is value(%level, select='substring($space, 1, $_indent + (%level) * $autoindent)'); vb@0: vb@0: decl stylesheet( vb@0: *output="xml", vb@0: version="1.0", vb@0: xmlns:xsl="http://www.w3.org/1999/XSL/Transform" vb@0: ) { vb@0: output *output; vb@0: const "space", !"'" + " " * 200 + "'"!; vb@0: param "autoindent", 4; vb@0: content; vb@0: }; vb@0: vb@0: decl estylesheet is stylesheet ( vb@0: xmlns:exsl='http://exslt.org/common', vb@0: xmlns:math='http://exslt.org/math', vb@0: xmlns:func='http://exslt.org/functions', vb@0: xmlns:str='http://exslt.org/strings', vb@0: xmlns:dyn='http://exslt.org/dynamic', vb@0: xmlns:set='http://exslt.org/sets', vb@8: xmlns:sets='http://exslt.org/sets', vb@0: xmlns:date='http://exslt.org/dates-and-times', vb@3: xmlns:yml='http://fdik.org/yml', vb@9: extension-element-prefixes='exsl func str dyn set sets math date yml' vb@0: ); vb@0: vb@0: decl textstylesheet is estylesheet(*output="text") { vb@0: output *output; vb@0: const "space", !"'" + " " * 200 + "'"!; vb@0: param "autoindent", 4; vb@0: xsl:template "text()"; vb@0: content; vb@0: }, tstylesheet is textstylesheet; vb@0: vb@0: decl template(match) { vb@0: _trace_param *_trace_info; vb@0: param "_indent", 0; vb@0: content; vb@0: }; vb@0: vb@0: decl function(name) alias template { vb@0: _trace_param *_trace_info; vb@0: param "_indent", 0; vb@0: content; vb@0: }; vb@0: vb@0: decl call(name) alias call-template { vb@0: _trace_with *_trace_info; vb@0: content; vb@0: }; vb@0: vb@0: decl namespace_alias(stylesheet-prefix, result-prefix); vb@0: decl text, raw(disable-output-escaping='yes') alias text; vb@0: vb@0: decl with(name, select) alias with-param; vb@0: decl withIndent(%level, name="_indent", select='$_indent + (%level) * $autoindent') alias with-param; vb@0: vb@0: decl apply(select, *indent=1) alias apply-templates { vb@0: _trace_with *_trace_info; vb@0: withIndent *indent; vb@0: content; vb@0: }; vb@0: vb@0: decl choose, when(test), otherwise; vb@0: decl if(test); vb@0: decl for(select) alias for-each, foreach is for; vb@0: decl element(name, namespace); vb@0: decl attrib(name, namespace) alias attribute, attrib_set(name) alias attribute-set; vb@0: decl processing(name) alias processing-instruction; vb@0: decl comment; vb@0: decl number(value), sort(select), decimal_format(name, decimal-separator=".", grouping-separator=","); vb@0: decl import(href), fallback; vb@0: decl message, error is message(terminate='yes'), warning is message(terminate='no'); vb@0: vb@0: decl debug(%text, select='yml:debug(%text)') alias value-of; vb@0: decl assert(%test, %msg="''", select='yml:assert(%test,%msg)') alias value-of; vb@0: } vb@0: vb@0: define operator "«(.*?)»" as value "%1"; vb@0: