42:, when used in the context of digital documents and word processing, refers to a "fill-in-the-blank" document that can be completed either by hand or through an automated process. Form letters are typical example: a letter written from a template, frequently used for "spam", by marketing campaigns. It allows a mass production of very similar letters. Another classic example is the "letter frame": any content is filled in the blank of a "header and footer" frame template. It allows a mass production of non-similar content letters, with a "standard frame". Both are examples of (production of) a set of "template derived documents".
2096:
2012:
1772:
For specify projects and division of tasks, designers and programmers need to adopt objective point of view to see and to organize a template set, that result into a certain dichotomy of "referential types of systems". The types of system strategies are with respective P process, and how engines do
49:
In the web jargon, dynamic document is a kind of document that has been prepared with fresh or customized information, for each individual viewing. It is not static because it changes with: the time (ex. a news content), the user (ex. preferences in a login session), the user interaction (ex. web
56:
If the context is changed from "document" to "software source code file", we emerge with another similar aplications: template metaprogramming, macro-languages, pre-processors, documentation generators, and others. Intuitivelly we can label all of then "template systems".
2201:
308:. Then, template syntax need special care with the "border" between languages, to avoid mixing and to supply scaping forms. There are well defined tags, marks or characteres, named "hooks", that intend to separate (and compatibilize) the two languages.
159:
To arrive at our formal definition, we first evaluate a "candidate system" and determine whether it meets a predetermined set of standards based on its input and output characteristics. For any "candidate system" to be characterized as a
45:
Digital documents, when used in a distribution or interchange context, like in the web (web pages as documents), have another demand. Instead of a set of documents, the web designers want a unique "adaptative" dynamic document.
860:
file) is also a valid template. On other template languages we can not only copy/paste a document to the template for this proposition, we need to add hooks (and/or headers) to express a "template container", see
176:
as our methods of evaluation. This methodology ensures that our formal definition is based solely on observable elements (input and output) and thus does not rely on informally promoted definitions.
2401:
The resulted sequence of tokens is not arbitrary, and, theoretically the "contiguous hypothesis" enforce a pattern that avoid validation necessity. Technically it is validated by a
2464:
545:
2546:
627:
2750:
2693:
831:
774:
252:
is a "output document with holes", where holes are place-holders or macro references. A simple and well-accepted example of "hole" is a HTML document with a place-holder:
82:
Another authors, like Parr , X , Y , was working with these problems, and draw a lot of cues and partial solutions. We are "updating" and generalizing these author ideas.
76:
terminologic diversty: conflics and/or ambiguities in terms as "template engine", "template processor", "style sheet", "template script", "template oriented program", etc.
2508:
589:
2636:
1477:
1429:
1010:
717:
53:
Resuming, digital documents obtained from a "templating process" have two kinds of popular products: a set of "derived documents" or a unique "dynamical document".
2786:
2586:
2566:
667:
647:
64:
Conceptual problem: there are many things that we can considerate "template systems", but there are a lack of a rigourous (mathematic) definition for it.
90:
There are many ways to express dynamical documents, all of then requer documents peaces and logic peaces. This is a very simple HTML dynamic document:
486:
The resulted sequence of tokens is not arbitrary, and, theoretically the "contiguous hypothesis" enforce a pattern that avoid validation necessity.
1608:
70:
observable diversty: at
Knowledge (XXG) listing and comparing about 60 distint "web template engines", and another more ... not web templates...
914:
2402:
2322:
Informally a simple template T is a "document with holes", where holes are place-holders or macro references. A template T, from the
60:
This article was motivated by a set of observable problems in the context of what we will more rigorousely naming "template systems",
266:
183:
illustration (like that below) indicates what we need to consider in our black box testing, based on specfic inputs and outputs:
897:, have also only variations on presentation, independent of the content. If we compare both, they contain the same information.
852:
Content independence on a template without instructions: for usual template languages, an output document file (like using an
841:
Writing for
Knowledge (XXG) community, the first author was suggested a little set of "essential properties", translated as:
2368:
453:
873:<html><? if ($ flag){?> Hello <?= $ x; ?>! <? } else { ?> Bye <? }?> </html>
1016:
1638:
1604:, and usually templates are internal (not customizable) to the system, the configuration files are modeled as content.
416:
There are a hi diversity of styles for hook encoding, but a generative grammar (...) show that is a common approach.
1792:: all the logic about sub-template choices (typically a if/then or switch/case logic) are explicit into the script.
902:
2189:
2865:", T. Parr (2004). In Proceedings International WWW Conference, New York, USA. Access also at USFCA University.
2364:
1912:
reference model, is the main split criteria for group then. There are illustrated (see on links) three groups:
1863:
449:
2339:
1704:
All template language need clear rules and "syntax facilities" (simple for human and machine) to evaluate the
424:
112:
2129:) Output "on-demand production", "on-fly publication" and receiving (over distribution method).
2376:
2372:
1593:
1260:
process, returns a "expanded equivalent template". A engine (or manual procedure) that only find and expand
461:
457:
237:
1049:
2205:
1905:
980:
need a pre-defined root. For express an input with a single template (N=1) the alternative notation L={T
2419:
2268:, the possibility of use a "distributed library", L, where the templates are not at the same resource.
1615:), if the content, C, and output, R, are on the same format, like XML. Example: a composition
500:
2313:
when producing with a pre-determined demand, can also use similar strategy, to "cache by publication".
1587:
Template systems modeled as complex dataflows, must use simplifier hypothesis to the characterization.
2513:
1799:
1224:, that specify the output language into an "alternative syntax", it is necessary that this syntax is
1082:
594:
2698:
2641:
1921:
1917:
1913:
1752:
1117:
779:
722:
293:
2804:
with the output language". Languages like XQuery permits both of the "template embeddeding modes".
2815:
2469:
1951:
922:
869:
from the template. This cleaning function can be exemplified with a little PHP code (see fig. 1):
550:
233:
2591:
1462:
1414:
995:
672:
1862:
language feature (content choice by a dynamic context), the engine use a dispatcher or another
1097:(T, C) process β perhaps using implicit sub-templates, but not a template library β can said "
2824:: this definition is given by a generalization over "Parr split model" , that must start with
2045:
The system act only on local transfer process. The "global transfer process" need two stages:
1590:
Template systems modeling is the first and fundamental step to the characterization. Example:
934:
926:
214:
169:
1837:
as pre-defined rules, that permit the content choose (select) what sub-template will be used.
1760:
277:
marks. It permits the separation between logic (hidden for blue designers-view) and design.
2005:"information A, at X, is a received information B from Y". Attribution with communication.
1813:
Notes: need a "root template", to express the logic for select "first level sub-templates".
2862:
1834:
1125:
1078:
977:
188:
2771:
2571:
2551:
2413:
2343:
1053:
913:
652:
632:
494:
428:
1827:: the template engine "select desirable content and frame it with template fragments".
1056:β when C is not a single set of values, like a sequence (ordered set), or a XML input.
2852:", C. Brabrand, A. Moller, M. I. Schwartzbach. (2006). University of Aarhus, Denmark.
2832:... Somente citar Parr e outros, sem se aprofundar, remetendo a trabalhos futuros...
1909:
1634:
1213:(T) is a "clean function" that extract all fragments (with respective hooks) of the
135:
if the language have "ever balanced", there are no final "s?" or "t?" pattern. ....
2811:
2793:
2200:
2095:
1859:
1745:
1741:
1612:
1261:
1121:
1020:
945:
887:. All the "template language code" is processed by the template engine in one step.
2818:
or viewer/editor choose) a template as a "output language embedded with a script".
2215: All other combinations, with one or more elements, but not all, on sever:
1392:
R have nothing to process if it is used as a template, it can only be used as a T
383:: to encode scalar variables, sub-template references, or expressions. Examples:
2106: there no flow between nets, all are server-side net (or server machine).
17:
865:. To generalize the idea we can use a kind of "cleaning function" to eliminate
2390:
2011:
1881:
1661:
1657:
1044:
475:
73:
methodologic diversty: how to select, when use one or another type of solution
1019:. C is in principle read-only, but engine can assign values for simplify the
883:
The output document is always a "cleaned document", without any trace of the
2849:
1925:
1228:
to the output language, then, the clean operator also embody this reversion.
1150:: a template with no programming operation (without template instructions).
1074:
265:
192:
165:
1880:
augmented with a kind of "match and referrer sub-template by ID" (a simple
1786:: the template engine "select template fragments and fill it with content".
2166:) Output "on demand production" (first request) and caching.
1669:
218:
173:
2083: Publication (using another system or something like manual
1310:ΓΈ bypass (equivalence between cleaned empty template and empty output).
1950:"A is at X", or "the resource for A is at the X machine or at the same
1931:
Using the system notation (defs. for R, T, C, and P above) and adding:
2814:
see the script fragments as "holes", then, designers always see (by a
1660:. There are cases where the template language is like a "programmable
1833:: part of the logic is implicit (not expressed on script), and is on
1807:
1803:
1716:
1629:
152:. We need an objective criteria to select what is and what is not a
2199:
2094:
2010:
1248:(X). If it is a library, it is applied for all library templates.
912:
264:
322:: encloses blocks of developer-supplied program logic. Examples:
2386:
2088:
1852:
1844:
1720:
1712:
1665:
1620:
1600:, the source code (commented or not) is modeled as (structured)
1581:
1221:
862:
853:
471:
1884:
dispatcher can do it) instead direct control. By other hand, a
1697:
The simplest "substitution string system" can characterized as
1023:. Alternative notation for express elements (attributes) C = {c
221:
tests. A set of positive results on the tests must reflect the
2193:
2084:
1924:. A formal characterization avoid mistakes about systems with
857:
1015:
C is a set (or a sequence) of incoming data values, from the
240:
a formal analytical framework to establish these properties.
1675:
For validate a "candidate system" we need the correspondent
370:<xsl:template name="stName"> ... </xsl:template>
2863:
Enforcing Strict Model-View
Separation in Template Engines
893:
The output documents of templates with only variations on
1350:
Content independence on the "no instructions template". T
361:<!-- BEGIN stName --> ... <!-- END stName -->
2828:
and not is submitted to system context considerations.
1143:ΓΈ: an empty content, empty template or empty document.
300:) require a low-level separation strategy to isolate
2774:
2701:
2644:
2594:
2574:
2554:
2516:
2472:
2422:
1465:
1417:
998:
782:
725:
675:
655:
635:
597:
553:
503:
1236:(X) is a "information content set" function, like a
1052:) set of all possible contents. It can also specify
27:
2338:
A template T is a string that can be split (using "
890:
No information is generated by the template engine.
2780:
2744:
2687:
2630:
2580:
2560:
2540:
2502:
2458:
2275:do also the publication, it is characterized as a
2068:) Output production, with the system.
1653:
1471:
1423:
1004:
917:Elements (C,T,P,R) on the dataflow representation.
845:An empty template supplies an empty document: the
825:
768:
711:
661:
641:
621:
583:
539:
357:: to fix the frontiers of the sub-template block.
296:necessities (e. g. content from presentation on
2188:Note: system generating meta-templates (like a
1730:interpreter, that need output instruction like
968:There are N templates, identified by the index
876:Cleaned PHP (only the black portion of fig.1):
2326:, is an input it self, or an element from the
1240:from a txt converter. If X is a template, the
1214:
976:is also used as "default root template", when
884:
866:
849:can not add information to the empty template.
2196:output) use cache also for the first request.
2183: (next request), using the cache.
1354:bypass. For lib-less systems (where L={T}),
8:
2535:
2523:
2497:
2479:
2323:
616:
604:
578:
560:
2792:), it is a template with "output language
2393:, is transformed into a unique "contiguous
878:<html> Hello ! Bye </html>
837:Informal check-list of essential properties
478:, is transformed into a unique "contiguous
1978:erver (or on a same high performance LAN).
2773:
2728:
2717:
2700:
2671:
2660:
2643:
2620:
2612:
2604:
2593:
2573:
2553:
2515:
2471:
2421:
1464:
1416:
997:
809:
798:
781:
752:
741:
724:
701:
693:
685:
674:
654:
634:
596:
552:
502:
344:<cfscript> script </cfscript>
148:There are many systems promoted as being
144:Motivations and methodological background
50:page game), the context, or all of them.
2762:About convention for "embed" terminology
2588:the following production rules:
2015:Outside (or cached) server architecture.
1933:
1755:is also a feature (may be formalized by
1286:
1189:) is a library relationship where all T
669:the following production rules:
67:Diversity problems: ("Babel problems"),
2841:
1692:Important conclusions from definitions:
125:: document-background template language
1773:decisions about sub-template choices:
423:is a string that can be split (using "
93:<html>Hello {$ x}!</html>
30:ARTICLE COLABORATIVE COSNTRUCTION ...
2363:: script contiguous fragments, like
1888:can express traditional logic into a
1860:content-driven sub-template reference
1093:({T},C). Systems that only work as a
448:: script contiguous fragments, like
279:Below the source code example, where
255:<html>Hello {$ x}!</html>
198:The template and contents are inputs;
131:: script-background template language
7:
2796:with the script", else (starts with
1988:utside server (and outside client).
1759:but not is modeled to preserve the
1711:Template files from languages like
405:<xsl:value-of select="$ x" />
86:From dynamic documents to templates
2800:) it is a template with a "script
2517:
2438:
1928:strategies and remote references.
1748:, is not a general characteristic.
1734:and has no hook notation, are not.
1683:, as specific checking tools, and
1268:Essential properties (for all L, L
598:
519:
311:Refs X, Y, Z suggest os seguintes
244:Informal Template characterization
24:
2459:{\displaystyle G=(N,\Sigma ,Q,A)}
540:{\displaystyle G=(N,\Sigma ,Q,A)}
201:The output documents are outputs.
1751:The possibility of sub-template
1737:The process cannot be arbitrary.
1719:are templates, but files like a
2541:{\displaystyle \Sigma =\{t,s\}}
2342:") into 2 distinct, not empty,
2324:template system reference model
1819:Content-driven template systems
1763:of template system definition).
1554:,C)) and, For lib-less
622:{\displaystyle \Sigma =\{t,s\}}
427:") into 2 distinct, not empty,
2850:"Dual Syntax for XML Languages
2729:
2718:
2672:
2661:
2621:
2613:
2605:
2453:
2429:
2208:(decentralized) architectures.
1886:content-driven template system
1778:Script-driven template systems
905:about use of the definitions.
810:
799:
753:
742:
702:
694:
686:
534:
510:
164:, we have to abstract it as a
118:Document designer perseption:
1:
2745:{\displaystyle Y:=stY|st|sts}
2688:{\displaystyle X:=tsX|ts|tst}
2412:Formally it is supplied by a
2381:Note: a sequence of repeated
1900:Architecture characterization
1878:script-driven template system
1723:script, evaluated by a usual
826:{\displaystyle Y:=stY|st|sts}
769:{\displaystyle X:=tsX|ts|tst}
466:Note: a sequence of repeated
217:methodology, to fix a set of
2407:/^((t(st)*s?)|(s(ts)*t?))$ /
2260:) Typical case.
2238:) Generic case.
1908:of template systems, into a
1639:XML transformation languages
1447:No information generated by
1250:For T on the above example,
1220:For template languages like
1128:, R is any kind of document.
1085:, to express singular case,
1021:variable declaration feature
262:is a input variable. (...)
2503:{\displaystyle N=\{A,X,Y\}}
2271:Note: when a system with a
1855:(lib-less on typical uses).
1687:as a generic checking tool.
1644:If no content on template,
921:To formally define, we can
871:PHP source (all template):
584:{\displaystyle N=\{A,X,Y\}}
289:are two distinct languages.
2883:
2631:{\displaystyle A:=X|Y|s|t}
2371:β simple instructions, or
1806:(sophisticated lib-less),
1768:Referential "driven types"
1472:{\displaystyle \subseteq }
1424:{\displaystyle \subseteq }
1005:{\displaystyle \subseteq }
712:{\displaystyle A:=X|Y|s|t}
456:β simple instructions, or
207:What is and what is not a
2788:productions (starts with
2334:Template characterization
2318:Language characterization
2099:Server-side architecture.
2087:) and distribution (e.g.
1520:Content conservation on "
234:mathematical system model
2133:Or caching on server:
1244:(X) process starts with
205:To answer the question,
1864:event-driven algorithms
1831:Programmer's perception
1790:Programmer's perception
1740:The possibility of use
1594:documentation generator
909:Formal characterization
335:<? script ?>
326:<% script %>
273:are exemplified by the
139:System characterization
100:is a input variable.
26:...THIS PLACE IS FOR A
2782:
2746:
2689:
2632:
2582:
2568:the start symbol, and
2562:
2542:
2504:
2460:
2209:
2100:
2020:Outside server systems
2016:
1914:Outside server systems
1473:
1425:
1197:have a correspondent T
1006:
918:
827:
770:
713:
663:
649:the start symbol, and
643:
623:
585:
541:
294:Separation of concerns
290:
238:specify with precision
2822:About Parr definition
2783:
2747:
2690:
2633:
2583:
2563:
2543:
2505:
2461:
2379:, or blocks of them.
2357:contiguous fragments.
2273:outside server engine
2203:
2098:
2022:(or "local systems")
2014:
1858:Notes: to supply the
1825:Designer's perception
1802:(simplest lib-less),
1784:Designer's perception
1474:
1426:
1007:
937:and your parameters:
916:
828:
771:
714:
664:
644:
624:
586:
542:
464:, or blocks of them.
442:contiguous fragments.
268:
107:Hooks and backgrounds
2772:
2699:
2642:
2592:
2572:
2552:
2514:
2470:
2420:
2264:There are also, on
1670:RELAX Compact_syntax
1662:schema specification
1463:
1415:
1135:Essential properties
1118:web template systems
996:
780:
723:
673:
653:
633:
595:
551:
501:
223:essential properties
191:, a process, is the
2808:About point of view
2385:, like occurs with
2311:server-side systems
2266:distributed systems
2213:Distributed systems
2104:Server-side systems
1922:Distributed systems
1918:Server-side systems
1849:attribute languages
1753:recurrence relation
1656:, then T is like a
1607:It is possible a P
1592:for characterize a
1582:informal properties
1526:Obs.: imply
1254:(T) = {Hello, Bye}.
984:}={T}, can be used.
470:, like occurs with
213:, we need, for the
2778:
2764:: if the template
2742:
2685:
2628:
2578:
2558:
2538:
2500:
2456:
2414:generative grammar
2403:regular expression
2277:distributed system
2210:
2101:
2017:
1984:- On another LAN,
1746:template languages
1633:(T, C)) on
1580:See corresponding
1469:
1421:
1002:
919:
901:-- Note: see also
823:
766:
709:
659:
639:
619:
581:
537:
495:generative grammar
387:<%=x %>
355:Sub-template hooks
291:
248:A simple template
2816:background effect
2781:{\displaystyle X}
2581:{\displaystyle Q}
2561:{\displaystyle A}
2009:
2008:
1744:is a feature for
1574:
1573:
1081:. Suppose P as a
662:{\displaystyle Q}
642:{\displaystyle A}
493:is supplied by a
215:Black box testing
170:Black box testing
2874:
2866:
2859:
2853:
2846:
2787:
2785:
2784:
2779:
2768:is generated by
2751:
2749:
2748:
2743:
2732:
2721:
2694:
2692:
2691:
2686:
2675:
2664:
2637:
2635:
2634:
2629:
2624:
2616:
2608:
2587:
2585:
2584:
2579:
2567:
2565:
2564:
2559:
2547:
2545:
2544:
2539:
2509:
2507:
2506:
2501:
2465:
2463:
2462:
2457:
2408:
2305:
2301:
2297:
2290:
2286:
2259:
2255:
2251:
2244:
2237:
2233:
2229:
2222:
2204:Client-side and
2182:
2175:
2165:
2161:
2157:
2150:
2143:
2128:
2124:
2120:
2113:
2082:
2078:
2074:
2067:
2063:
2059:
2052:
2040:
2036:
2032:
2002:
1998:
1983:
1973:
1963:
1957:
1947:
1934:
1810:(sophisticated).
1733:
1478:
1476:
1475:
1470:
1451:. For lib-less
1430:
1428:
1427:
1422:
1287:
1282:template systems
1157:= { T | T is a T
1126:template systems
1017:content resource
1011:
1009:
1008:
1003:
972:. The template T
946:Template library
879:
874:
832:
830:
829:
824:
813:
802:
775:
773:
772:
767:
756:
745:
718:
716:
715:
710:
705:
697:
689:
668:
666:
665:
660:
648:
646:
645:
640:
628:
626:
625:
620:
590:
588:
587:
582:
546:
544:
543:
538:
406:
397:
388:
381:Expression hooks
371:
362:
348:ColdFusion style
345:
336:
327:
288:
276:
261:
150:template systems
130:
124:
99:
2882:
2881:
2877:
2876:
2875:
2873:
2872:
2871:
2870:
2869:
2860:
2856:
2847:
2843:
2838:
2770:
2769:
2697:
2696:
2640:
2639:
2590:
2589:
2570:
2569:
2550:
2549:
2512:
2511:
2468:
2467:
2418:
2417:
2406:
2380:
2355:output document
2320:
2303:
2299:
2295:
2288:
2284:
2257:
2253:
2249:
2242:
2235:
2231:
2227:
2220:
2180:
2179:
2174:
2170:
2163:
2159:
2155:
2148:
2147:
2142:
2138:
2126:
2122:
2118:
2111:
2080:
2076:
2072:
2065:
2061:
2057:
2050:
2038:
2034:
2030:
2000:
1996:
1981:
1971:
1961:
1955:
1945:
1902:
1872:There are also
1770:
1731:
1729:
1699:template system
1650:script language
1635:Cocoon pipeline
1632:
1623:
1598:template system
1591:
1569:
1561:
1553:
1549:
1539:
1535:
1525:
1516:
1504:
1461:
1460:
1439:
1413:
1412:
1395:
1369:
1361:
1353:
1346:
1342:
1332:
1324:
1280:, and C), that
1279:
1275:
1271:
1249:
1215:script language
1204:
1200:
1196:
1192:
1188:
1184:
1173:
1169:
1160:
1156:
1149:
1124:. On (generic)
1079:template engine
1038:
1034:
1030:
1026:
994:
993:
983:
975:
964:
960:
956:
952:
931:template system
911:
885:script language
877:
875:
872:
870:
867:script language
847:template system
839:
778:
777:
721:
720:
671:
670:
651:
650:
631:
630:
593:
592:
549:
548:
499:
498:
465:
440:output document
404:
395:
386:
369:
360:
343:
334:
325:
306:output language
302:script language
284:
278:
274:
259:
256:
246:
227:template system
209:template system
189:template engine
181:template system
162:template system
154:template system
141:
128:
122:
109:
97:
94:
88:
36:
22:
21:
20:
12:
11:
5:
2880:
2878:
2868:
2867:
2854:
2840:
2839:
2837:
2834:
2830:
2829:
2819:
2805:
2777:
2741:
2738:
2735:
2731:
2727:
2724:
2720:
2716:
2713:
2710:
2707:
2704:
2684:
2681:
2678:
2674:
2670:
2667:
2663:
2659:
2656:
2653:
2650:
2647:
2627:
2623:
2619:
2615:
2611:
2607:
2603:
2600:
2597:
2577:
2557:
2537:
2534:
2531:
2528:
2525:
2522:
2519:
2499:
2496:
2493:
2490:
2487:
2484:
2481:
2478:
2475:
2455:
2452:
2449:
2446:
2443:
2440:
2437:
2434:
2431:
2428:
2425:
2399:
2398:
2358:
2319:
2316:
2315:
2314:
2307:
2262:
2261:
2239:
2198:
2197:
2185:
2184:
2177:
2172:
2167:
2145:
2140:
2131:
2130:
2093:
2092:
2069:
2043:
2042:
2007:
2006:
2003:
1992:
1991:
1990:
1989:
1979:
1969:
1948:
1942:
1941:
1938:
1901:
1898:
1870:
1869:
1868:
1867:
1856:
1838:
1828:
1816:
1815:
1814:
1811:
1793:
1787:
1769:
1766:
1765:
1764:
1749:
1738:
1735:
1727:
1709:
1702:
1689:
1688:
1673:
1642:
1628:
1619:
1605:
1588:
1585:
1572:
1571:
1567:
1559:
1551:
1548:
1537:
1534:
1518:
1514:
1502:
1492:
1488:
1487:
1468:
1445:
1438:
1420:
1402:
1398:
1397:
1393:
1390:
1376:
1372:
1371:
1367:
1359:
1351:
1348:
1344:
1341:
1330:
1322:
1316:
1312:
1311:
1308:
1302:
1298:
1297:
1294:
1291:
1277:
1273:
1269:
1266:
1265:
1255:
1231:
1230:
1229:
1208:
1207:
1206:
1202:
1198:
1194:
1190:
1186:
1182:
1171:
1167:
1164:
1163:
1162:
1158:
1154:
1147:
1144:
1132:
1131:
1130:
1129:
1107:Process output
1104:
1103:
1102:
1077:model for the
1061:
1060:
1059:
1058:
1057:
1054:data structure
1048:, formally a (
1040:
1036:
1032:
1028:
1024:
1001:
987:
986:
985:
981:
973:
962:
958:
954:
950:
910:
907:
899:
898:
891:
888:
881:
850:
838:
835:
822:
819:
816:
812:
808:
805:
801:
797:
794:
791:
788:
785:
765:
762:
759:
755:
751:
748:
744:
740:
737:
734:
731:
728:
708:
704:
700:
696:
692:
688:
684:
681:
678:
658:
638:
618:
615:
612:
609:
606:
603:
600:
580:
577:
574:
571:
568:
565:
562:
559:
556:
536:
533:
530:
527:
524:
521:
518:
515:
512:
509:
506:
484:
483:
443:
414:
413:
412:
411:
402:
393:
378:
377:
376:
367:
352:
351:
350:
341:
332:
313:types of hooks
254:
245:
242:
203:
202:
199:
196:
140:
137:
133:
132:
126:
108:
105:
92:
87:
84:
80:
79:
78:
77:
74:
71:
65:
35:
32:
23:
15:
14:
13:
10:
9:
6:
4:
3:
2:
2879:
2864:
2858:
2855:
2851:
2845:
2842:
2835:
2833:
2827:
2823:
2820:
2817:
2813:
2809:
2806:
2803:
2799:
2795:
2791:
2775:
2767:
2763:
2760:
2759:
2758:
2757:
2753:
2739:
2736:
2733:
2725:
2722:
2714:
2711:
2708:
2705:
2702:
2682:
2679:
2676:
2668:
2665:
2657:
2654:
2651:
2648:
2645:
2625:
2617:
2609:
2601:
2598:
2595:
2575:
2555:
2532:
2529:
2526:
2520:
2494:
2491:
2488:
2485:
2482:
2476:
2473:
2450:
2447:
2444:
2441:
2435:
2432:
2426:
2423:
2415:
2410:
2404:
2396:
2392:
2388:
2384:
2378:
2374:
2370:
2366:
2362:
2359:
2356:
2352:
2349:
2348:
2347:
2345:
2341:
2340:hook criteria
2336:
2335:
2331:
2329:
2325:
2317:
2312:
2308:
2294:
2282:
2281:
2280:
2278:
2274:
2269:
2267:
2248:
2240:
2226:
2218:
2217:
2216:
2214:
2207:
2202:
2195:
2192:generating a
2191:
2187:
2186:
2168:
2154:
2136:
2135:
2134:
2117:
2109:
2108:
2107:
2105:
2097:
2090:
2086:
2070:
2056:
2048:
2047:
2046:
2029:
2025:
2024:
2023:
2021:
2013:
2004:
1994:
1993:
1987:
1980:
1977:
1970:
1967:
1960:
1959:
1953:
1949:
1944:
1943:
1939:
1936:
1935:
1932:
1929:
1927:
1923:
1919:
1915:
1911:
1910:client-server
1907:
1899:
1897:
1895:
1894:script-driven
1891:
1890:root template
1887:
1883:
1879:
1875:
1865:
1861:
1857:
1854:
1850:
1846:
1842:
1839:
1836:
1832:
1829:
1826:
1823:
1822:
1820:
1817:
1812:
1809:
1805:
1801:
1797:
1794:
1791:
1788:
1785:
1782:
1781:
1779:
1776:
1775:
1774:
1767:
1762:
1758:
1754:
1750:
1747:
1743:
1742:sub-templates
1739:
1736:
1726:
1722:
1718:
1714:
1710:
1708:(T) function.
1707:
1703:
1700:
1696:
1695:
1694:
1693:
1686:
1682:
1678:
1674:
1671:
1667:
1663:
1659:
1655:
1651:
1647:
1643:
1640:
1636:
1631:
1627:
1622:
1618:
1614:
1610:
1606:
1603:
1599:
1595:
1589:
1586:
1583:
1579:
1578:
1577:
1565:
1557:
1547:
1543:
1533:
1529:
1523:
1519:
1512:
1508:
1500:
1496:
1493:
1490:
1489:
1485:
1481:
1466:
1458:
1454:
1450:
1446:
1443:
1437:
1433:
1418:
1410:
1406:
1403:
1400:
1399:
1391:
1388:
1384:
1380:
1377:
1374:
1373:
1365:
1357:
1349:
1340:
1336:
1328:
1320:
1317:
1314:
1313:
1309:
1306:
1303:
1300:
1299:
1295:
1292:
1289:
1288:
1285:
1283:
1263:
1259:
1256:
1253:
1247:
1243:
1239:
1235:
1232:
1227:
1223:
1219:
1218:
1216:
1212:
1209:
1180:
1179:
1177:
1165:
1152:
1151:
1145:
1142:
1141:
1140:
1137:
1136:
1127:
1123:
1119:
1115:
1114:
1112:
1108:
1105:
1100:
1096:
1092:
1088:
1084:
1080:
1076:
1072:
1071:
1069:
1065:
1062:
1055:
1051:
1047:
1046:
1041:
1022:
1018:
1014:
1013:
999:
991:
988:
979:
971:
967:
966:
948:
947:
943:
942:
940:
939:
938:
936:
932:
928:
924:
915:
908:
906:
904:
896:
892:
889:
886:
882:
868:
864:
859:
855:
851:
848:
844:
843:
842:
836:
834:
820:
817:
814:
806:
803:
795:
792:
789:
786:
783:
763:
760:
757:
749:
746:
738:
735:
732:
729:
726:
706:
698:
690:
682:
679:
676:
656:
636:
613:
610:
607:
601:
575:
572:
569:
566:
563:
557:
554:
531:
528:
525:
522:
516:
513:
507:
504:
496:
492:
487:
481:
477:
473:
469:
463:
459:
455:
451:
447:
444:
441:
437:
434:
433:
432:
430:
426:
425:hook criteria
422:
417:
410:
403:
401:
394:
392:
385:
384:
382:
379:
375:
368:
366:
359:
358:
356:
353:
349:
342:
340:
333:
331:
324:
323:
321:
318:
317:
316:
314:
309:
307:
303:
299:
298:Web templates
295:
287:
282:
272:
267:
263:
253:
251:
243:
241:
239:
235:
230:
228:
224:
220:
216:
212:
210:
200:
197:
194:
190:
186:
185:
184:
182:
177:
175:
171:
168:and then use
167:
163:
157:
155:
151:
146:
145:
138:
136:
129:/^s(Ds)*D?$ /
127:
123:/^D(sD)*s?$ /
121:
120:
119:
116:
114:
106:
104:
101:
91:
85:
83:
75:
72:
69:
68:
66:
63:
62:
61:
58:
54:
51:
47:
43:
41:
33:
31:
29:
19:
2857:
2844:
2831:
2825:
2821:
2807:
2801:
2797:
2789:
2765:
2761:
2755:
2754:
2411:
2400:
2394:
2382:
2369:instructions
2360:
2354:
2350:
2337:
2333:
2332:
2327:
2321:
2310:
2292:
2276:
2272:
2270:
2265:
2263:
2246:
2224:
2212:
2211:
2152:
2132:
2115:
2103:
2102:
2054:
2044:
2027:
2019:
2018:
1985:
1975:
1965:
1930:
1906:architecture
1903:
1893:
1892:, used as a
1889:
1885:
1877:
1873:
1871:
1848:
1840:
1830:
1824:
1818:
1795:
1789:
1783:
1777:
1771:
1756:
1724:
1705:
1698:
1691:
1690:
1684:
1680:
1676:
1649:
1645:
1625:
1616:
1601:
1597:
1575:
1563:
1555:
1545:
1541:
1531:
1527:
1522:presentation
1521:
1510:
1506:
1498:
1494:
1483:
1479:
1456:
1452:
1448:
1441:
1435:
1431:
1408:
1404:
1386:
1382:
1378:
1363:
1355:
1338:
1334:
1326:
1318:
1307:({ΓΈ},C) = ΓΈ
1304:
1281:
1267:
1262:sub-template
1257:
1251:
1245:
1241:
1238:set of words
1237:
1233:
1225:
1210:
1176:presentation
1175:
1138:
1134:
1133:
1122:web document
1110:
1106:
1098:
1094:
1090:
1086:
1067:
1063:
1043:
989:
969:
944:
930:
920:
900:
895:presentation
894:
846:
840:
490:
488:
485:
479:
467:
454:instructions
445:
439:
435:
420:
418:
415:
408:
400:XQuery style
399:
390:
380:
373:
365:PHPlib style
364:
354:
347:
338:
329:
320:Script hooks
319:
312:
310:
305:
301:
297:
292:
285:
280:
270:
257:
249:
247:
231:
226:
222:
208:
206:
204:
180:
178:
161:
158:
153:
149:
147:
143:
142:
134:
117:
110:
102:
95:
89:
81:
59:
55:
52:
48:
44:
39:
37:
34:Introduction
25:
2365:expressions
2206:distributed
1940:Definition
1874:mixed types
1664:" (compare
1648:(T)=ΓΈ, and
1609:composition
1524:variants".
1264:references.
1178:variants".
1083:overloading
450:expressions
419:A template
269:The use of
18:User:Krauss
2836:References
2391:ColdFusion
2377:directives
2373:statements
2091:browsing).
1896:template.
1761:simplicity
1637:(see also
1440:(L, C)) U
1226:reversible
1101:" systems.
1045:data model
856:file as a
476:ColdFusion
462:directives
458:statements
409:XSLT style
374:XSLT style
2812:designers
2638:;
2518:Σ
2439:Σ
1937:Notation
1467:⊆
1419:⊆
1381:(L, C) =
1293:Property
1284:satisfy:
1120:, R is a
1075:black box
1042:D is the
1000:⊆
719:;
599:Σ
520:Σ
391:ASP style
339:PHP style
330:ASP style
232:We use a
193:Black box
179:A simple
174:Use cases
166:black box
38:The term
28:ARXIV.ORG
2802:embedded
2794:embedded
2695:;
2397:" block.
2346:types:
2309:Typical
1958:can be:
1796:Examples
1613:pipeline
1459:(T, C))
1411:(L, C))
1389:(L, C))
1099:lib-less
1073:It is a
1050:universe
949:, L = {T
941:Inputs:
935:function
927:dataflow
923:modeling
776:;
489:A rigor
482:" block.
431:types:
219:use case
40:template
2466:, with
2328:library
1847:(lib),
1841:Example
1654:regular
1602:content
1576:Notes:
1540:,C)) =
1505:,C)) =
1362:,ΓΈ) =
1333:, C) =
1113:(L, C)
1089:(T, C)=
1070:(L, C)
1064:Process
990:Content
547:, with
407:
398:
389:
372:
363:
346:
337:
328:
2756:Notes:
1968:lient.
1920:, and
1835:engine
1808:Smarty
1804:XQuery
1717:XQuery
1658:schema
1630:XQuery
1482:(T) U
1325:,ΓΈ) =
1296:Notes
1201:from L
1193:from L
1109:, R =
978:engine
258:where
96:where
2375:, or
2344:token
2178:cache
2146:cache
1974:- On
1964:- On
1926:cache
1851:like
1732:print
1706:Clear
1677:Clean
1668:with
1596:as a
1517:,C))
1486:(C).
1383:Clean
1364:Clean
1347:,ΓΈ))
1335:Clean
1246:Clean
1211:Clean
1174:are "
1139:Let:
1035:, β¦ c
1031:, β¦ c
961:, β¦ T
957:, β¦ T
933:as a
925:the (
460:, or
429:token
396:{$ x}
304:from
286:green
281:black
271:hooks
260:{$ x}
225:of a
113:hooks
111:...
103:...
98:{$ x}
16:<
2387:XSLT
2089:HTTP
2026:R β
1904:The
1882:hash
1876:: a
1853:Zope
1845:XSLT
1728:perl
1721:Perl
1713:XSLT
1679:and
1666:Haml
1624:(L,
1621:XSLT
1570:) .
1562:) =
1444:(C)
1222:Haml
1199:b, j
1191:a, i
992:, C
863:XSLT
854:HTML
472:XSLT
283:and
187:The
172:and
115:...
2510:,
2389:or
2367:or
2287:β R
2258:@S2
2254:@S1
2236:@S4
2232:@S3
2228:@S2
2221:@S1
2194:PHP
2190:CMS
2176:β R
2144:β R
2085:FTP
2079:β R
2075:β R
1999:β B
1954:".
1952:LAN
1946:A@X
1800:SSI
1715:or
1652:is
1394:nop
1370:).
1368:nop
1360:nop
1352:nop
1345:nop
1331:nop
1323:nop
1278:nop
1276:, L
1272:, L
1185:, L
1170:, T
1159:nop
1155:nop
1148:nop
1116:On
1027:, c
953:, T
903:FAQ
858:PHP
591:,
474:or
452:or
275:red
236:to
2810::
2752:.
2706::=
2649::=
2599::=
2548:,
2416:,
2409:.
2405::
2353::
2330:.
2304:@O
2302:,C
2300:@O
2298:(L
2296:@O
2291:β
2289:@O
2285:@S
2279::
2256:,C
2252:(L
2250:@C
2245:β
2243:@C
2234:,C
2230:(L
2223:β
2181:@S
2171:@C
2164:@S
2162:,C
2160:@S
2158:(L
2156:@S
2151:β
2149:@S
2139:@C
2127:@S
2125:,C
2123:@S
2121:(L
2119:@S
2114:β
2112:@C
2081:@O
2077:@S
2073:@C
2066:@O
2064:,C
2062:@O
2060:(L
2058:@O
2053:β
2051:@O
2039:@O
2037:,C
2035:@O
2033:(L
2031:@O
2001:@Y
1997:@X
1982:@O
1972:@S
1962:@C
1956:@X
1916:,
1843::
1821::
1798::
1780::
1757:P'
1681:P'
1672:).
1641:).
1566:(T
1558:(T
1550:(L
1546:P'
1536:(L
1532:P'
1513:(L
1501:(L
1491:5
1436:P'
1401:4
1396:.
1375:3
1366:(T
1358:(T
1343:(L
1339:P'
1329:(L
1321:(L
1315:2
1301:1
1290:#
1258:P'
1217:.
1181:(L
1066:,
1012:D
965:}
929:)
833:.
787::=
730::=
680::=
629:,
497:,
438::
315::
229:.
156:.
2861:"
2848:"
2826:t
2798:s
2790:t
2776:X
2766:T
2740:s
2737:t
2734:s
2730:|
2726:t
2723:s
2719:|
2715:Y
2712:t
2709:s
2703:Y
2683:t
2680:s
2677:t
2673:|
2669:s
2666:t
2662:|
2658:X
2655:s
2652:t
2646:X
2626:t
2622:|
2618:s
2614:|
2610:Y
2606:|
2602:X
2596:A
2576:Q
2556:A
2536:}
2533:s
2530:,
2527:t
2524:{
2521:=
2498:}
2495:Y
2492:,
2489:X
2486:,
2483:A
2480:{
2477:=
2474:N
2454:)
2451:A
2448:,
2445:Q
2442:,
2436:,
2433:N
2430:(
2427:=
2424:G
2395:s
2383:s
2361:s
2351:t
2306:)
2293:P
2283:R
2247:P
2241:R
2225:P
2219:R
2173:2
2169:R
2153:P
2141:1
2137:R
2116:P
2110:R
2071:R
2055:P
2049:R
2041:)
2028:P
1995:A
1986:O
1976:S
1966:C
1866:.
1725:P
1701:.
1685:I
1646:I
1626:P
1617:P
1611:(
1584:.
1568:b
1564:I
1560:a
1556:I
1552:b
1544:(
1542:I
1538:a
1530:(
1528:I
1515:b
1511:P
1509:(
1507:I
1503:a
1499:P
1497:(
1495:I
1484:I
1480:I
1457:P
1455:(
1453:I
1449:P
1442:I
1434:(
1432:I
1409:P
1407:(
1405:I
1387:P
1385:(
1379:P
1356:P
1337:(
1327:P
1319:P
1305:P
1274:b
1270:a
1252:I
1242:I
1234:I
1205:.
1203:b
1195:a
1187:b
1183:a
1172:b
1168:a
1166:T
1161:}
1153:L
1146:T
1111:P
1095:P
1091:P
1087:P
1068:P
1039:}
1037:M
1033:j
1029:2
1025:1
982:1
974:1
970:i
963:N
959:i
955:2
951:1
880:.
821:s
818:t
815:s
811:|
807:t
804:s
800:|
796:Y
793:t
790:s
784:Y
764:t
761:s
758:t
754:|
750:s
747:t
743:|
739:X
736:s
733:t
727:X
707:t
703:|
699:s
695:|
691:Y
687:|
683:X
677:A
657:Q
637:A
617:}
614:s
611:,
608:t
605:{
602:=
579:}
576:Y
573:,
570:X
567:,
564:A
561:{
558:=
555:N
535:)
532:A
529:,
526:Q
523:,
517:,
514:N
511:(
508:=
505:G
491:T
480:s
468:s
446:s
436:t
421:T
250:T
211:?
195:;
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.